Skip to content

Commit

Permalink
Fixes for bug #56589: Usage of time-dependent drift velocity calculation
Browse files Browse the repository at this point in the history
  • Loading branch information
hristov committed Oct 15, 2009
1 parent e2b4645 commit 9e6d633
Show file tree
Hide file tree
Showing 11 changed files with 1,862 additions and 414 deletions.
20 changes: 11 additions & 9 deletions TPC/AliTPCLaserTrack.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ void AliTPCLaserTrack::LoadTracks()
}


Int_t AliTPCLaserTrack::IdentifyTrack(AliExternalTrackParam *track)
Int_t AliTPCLaserTrack::IdentifyTrack(AliExternalTrackParam *track, Int_t side)
{
//
// Find the laser track which is corresponding closest to 'track'
Expand All @@ -139,13 +139,14 @@ Int_t AliTPCLaserTrack::IdentifyTrack(AliExternalTrackParam *track)
Double_t pxyz0[3];
Double_t pxyz1[3];
track->GetXYZ(lxyz0);
track->GetPxPyPz(pxyz0);
track->GetDirection(pxyz0);
//
Float_t mindist=40; // maxima minimal distance
Float_t mindist=10; // maxima minimal distance
Int_t id = -1;
AliExternalTrackParam* ltr0= (AliExternalTrackParam*)arrTracks->UncheckedAt(0);
for (Int_t itrack=0; itrack<fgkNLaserTracks; itrack++){
AliExternalTrackParam *ltr = (AliExternalTrackParam*)arrTracks->UncheckedAt(itrack);
for (Int_t itrack=0; itrack<fgkNLaserTracks; itrack++){
AliTPCLaserTrack *ltr = (AliTPCLaserTrack*)arrTracks->UncheckedAt(itrack);
if (side>=0) if (ltr->GetSide()!=side) continue;
Double_t * kokot = (Double_t*)ltr->GetParameter();
kokot[4]=-0.0000000001;
//
Expand All @@ -156,15 +157,16 @@ Int_t AliTPCLaserTrack::IdentifyTrack(AliExternalTrackParam *track)
Double_t phi1 = TMath::ATan2(lxyz1[1],lxyz1[0]);
if (TMath::Abs(phi0-phi1)>kMaxdphi) continue;
// phi direction
ltr->GetPxPyPz(pxyz1);
Float_t distdir = (ltr->GetParameter()[2]-track->GetParameter()[2])*90; //distance at entrance
if (TMath::Abs(ltr->GetParameter()[2]-track->GetParameter()[2])>kMaxdphiP)
ltr->GetDirection(pxyz1);
Float_t direction= pxyz0[0]*pxyz1[0] + pxyz0[1]*pxyz1[1] + pxyz0[2]*pxyz1[2];
Float_t distdir = (1-TMath::Abs(direction))*90.; //distance at entrance
if (1-TMath::Abs(direction)>kMaxdphiP)
continue;
//
Float_t dist=0;
dist+=TMath::Abs(lxyz1[0]-lxyz0[0]);
dist+=TMath::Abs(lxyz1[1]-lxyz0[1]);
dist+=TMath::Abs(lxyz1[2]-lxyz0[2]);
// dist+=TMath::Abs(lxyz1[2]-lxyz0[2]); //z is not used for distance calculation
dist+=distdir;
//
if (id<0) {
Expand Down
2 changes: 1 addition & 1 deletion TPC/AliTPCLaserTrack.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class AliTPCLaserTrack : public AliExternalTrackParam {
static void LoadTracks();
static TObjArray* GetTracks() {return fgArrLaserTracks;}

static Int_t IdentifyTrack(AliExternalTrackParam *track);
static Int_t IdentifyTrack(AliExternalTrackParam *track, Int_t side=-1);

Int_t GetId() const {return fId; }
Int_t GetSide() const {return fSide; }
Expand Down
4 changes: 2 additions & 2 deletions TPC/AliTPCRecoParam.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ AliTPCRecoParam::AliTPCRecoParam():
fUseRadialCorrection(0), // use radial correction
fUseQuadrantAlignment(0), // use quadrant alignment
fUseSectorAlignment(0), // use sector alignment
fUseDriftCorrectionTime(0), // use drift correction time
fUseDriftCorrectionGY(0), // use drif correction global y
fUseDriftCorrectionTime(1), // use drift correction time
fUseDriftCorrectionGY(1), // use drif correction global y
fUseGainCorrectionTime(0), // use gain correction time
fUseExBCorrection(1), // use ExB correction
//
Expand Down
61 changes: 61 additions & 0 deletions TPC/AliTPCTransformation.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ Int_t AliTPCTransformation::BuildBasicFormulas(){
RegisterFormula("TPCscalingRIFC",(GenFuncG)(AliTPCTransformation::TPCscalingRIFC));
RegisterFormula("TPCscalingROFC",(GenFuncG)(AliTPCTransformation::TPCscalingROFC));
//
RegisterFormula("TPCdeltaFCROC",(GenFuncG)(AliTPCTransformation::TPCdeltaFCROC));
RegisterFormula("TPCdeltaFCCE",(GenFuncG)(AliTPCTransformation::TPCdeltaFCCE));
//
RegisterFormula("TPCscalingZDr",(GenFuncG)(AliTPCTransformation::TPCscalingZDrift));
RegisterFormula("TPCscalingZDrGy",(GenFuncG)(AliTPCTransformation::TPCscalingZDriftGy));
RegisterFormula("TPCscalingZDriftT0",(GenFuncG)(AliTPCTransformation::TPCscalingZDriftT0));
Expand Down Expand Up @@ -485,6 +488,64 @@ Double_t AliTPCTransformation::TPCscalingROFC(Double_t *xyz, Double_t * pa
}


Double_t AliTPCTransformation::TPCdeltaFCROC(Double_t *xyz, Double_t * param){
//
// delta R(Z) ROC induced
// param[0] - switch 0 - use distance to IFC - 1 - distance to IFC
// param[1] - kFC scaling factor (multiplication factor of (OFC-IFC))
// param[2] - kROC scaling factor
// parameters [1] and [2] should be obtained from the electric field
// simulation
//
Double_t rInner=78.8;
Double_t rFirst=85.2;
Double_t rLast=245.8;
Double_t rOuter=258.0;

Double_t radius = TMath::Sqrt(xyz[0]*xyz[0]+xyz[1]*xyz[1]);
//calculate distance to the FC - inner or outer
Double_t deltaFC = (param[0]<0.5)? TMath::Abs(radius-rFirst) : TMath::Abs(radius-rLast);
deltaFC/=(rOuter-rInner);
Double_t scalingFC = 1./(1.+deltaFC/(param[1]));
//
Double_t drift = 1.-TMath::Abs(xyz[2]/250.); // normalized drift length
Double_t scalingROC = (1.-1./(1.+drift/param[2]));
//
return xyz[3]*scalingFC*scalingROC;
}


Double_t AliTPCTransformation::TPCdeltaFCCE(Double_t *xyz, Double_t * param){
//
// delta R(Z) CE (central electrode) induced
// param[0] - switch 0 - use distance to IFC - 1 - distance to IFC
// param[1] - kFC scaling factor (multiplication factor of (OFC-IFC))
// param[2] - kCE scaling factor
// parameters [1] and [2] should be obtained from the electric field
// simulation
Double_t rInner=78.8;
Double_t rFirst=85.2;
Double_t rLast =245.8;
Double_t rOuter=258.0;

Double_t radius = TMath::Sqrt(xyz[0]*xyz[0]+xyz[1]*xyz[1]);
//calculate distance to the FC - inner or outer
Double_t deltaFC = (param[0]<0.5)? TMath::Abs(radius-rFirst) : TMath::Abs(radius-rLast);
deltaFC/=(rOuter-rInner);
Double_t scalingFC = 1./(1.+deltaFC/(param[1]));
//
Double_t drift = 1.-TMath::Abs(xyz[2]/250.); // normalized drift length
Double_t scalingCE = 1/(1.+(1.-drift)/param[2]); //
//
return xyz[3]*scalingFC*scalingCE;
}







//
// TPC sector local misalignment
//
Expand Down
6 changes: 6 additions & 0 deletions TPC/AliTPCTransformation.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,12 @@ class AliTPCTransformation: public TNamed{
//
static Double_t TPCscalingRIFC(Double_t *xyz, Double_t * param); // inner field cage r distorion
static Double_t TPCscalingROFC(Double_t *xyz, Double_t * param); // outer field cage r distorion
//
// TPC field cage + ROC misalignemnt induced distortion
//
static Double_t TPCdeltaFCROC(Double_t *xyz, Double_t * param);
static Double_t TPCdeltaFCCE(Double_t *xyz, Double_t * param);

//
// TPC local misalignment
//
Expand Down
Loading

0 comments on commit 9e6d633

Please sign in to comment.