fHRecSigYVsPWin(0x0),
fHRecSigZVsPWin(0x0)
{
- //AliTOFtrackerV1 main Ctor
+ //AliTOFtrackerV1 main Ctor
+
+ for (Int_t ii=0; ii<kMaxCluster; ii++) fClusters[ii]=0x0;
InitCheckHists();
delete fSeeds;
fSeeds=0x0;
}
+
+
+ for (Int_t ii=0; ii<kMaxCluster; ii++)
+ if (fClusters[ii]) fClusters[ii]->Delete();
+
}
//_____________________________________________________________________________
void AliTOFtrackerV1::GetPidSettings(AliESDpid *esdPID) {
//prepare the set of ESD tracks to be matched to clusters in TOF
Int_t seedsTOF1=0;
+ Int_t seedsTOF3=0;
Int_t seedsTOF2=0;
TClonesArray &aTOFTrack = *fTracks;
AliTOFtrack *track = new AliTOFtrack(*t); // New
Float_t x = (Float_t)track->GetX(); //New
- // TRD 'good' tracks, already propagated at 371 cm
- if ( ( (t->GetStatus()&AliESDtrack::kTRDout)!=0 ) &&
- ( x >= AliTOFGeometry::Rmin() ) ) {
- if ( track->PropagateToInnerTOF() ) {
+ // TRD 'good' tracks
+ if ( ( (t->GetStatus()&AliESDtrack::kTRDout)!=0 ) ) {
- AliDebug(1,Form(" TRD propagated track till rho = %fcm."
- " And then the track has been propagated till rho = %fcm.",
- x, (Float_t)track->GetX()));
+ AliDebug(1,Form(" Before propagation till inner TOF radius, ESDtrackLength=%f, TOFtrackLength=%f",t->GetIntegratedLength(),track->GetIntegratedLength()));
+
+ // TRD 'good' tracks, already propagated at 371 cm
+ if ( x >= AliTOFGeometry::Rmin() ) {
+
+ if ( track->PropagateToInnerTOF() ) {
+
+ AliDebug(1,Form(" TRD propagated track till rho = %fcm."
+ " And then the track has been propagated till rho = %fcm.",
+ x, (Float_t)track->GetX()));
+
+ track->SetSeedIndex(i);
+ t->UpdateTrackParams(track,AliESDtrack::kTOFin);
+ new(aTOFTrack[fNseedsTOF]) AliTOFtrack(*track);
+ fNseedsTOF++;
+ seedsTOF1++;
+
+ AliDebug(1,Form(" After propagation till inner TOF radius, ESDtrackLength=%f, TOFtrackLength=%f",t->GetIntegratedLength(),track->GetIntegratedLength()));
+ }
+ delete track;
- track->SetSeedIndex(i);
- t->UpdateTrackParams(track,AliESDtrack::kTOFin);
- new(aTOFTrack[fNseedsTOF]) AliTOFtrack(*track);
- fNseedsTOF++;
- seedsTOF1++;
}
- delete track;
+ else { // TRD 'good' tracks, propagated rho<371cm
+
+ if ( track->PropagateToInnerTOF() ) {
+
+ AliDebug(1,Form(" TRD propagated track till rho = %fcm."
+ " And then the track has been propagated till rho = %fcm.",
+ x, (Float_t)track->GetX()));
+
+ track->SetSeedIndex(i);
+ t->UpdateTrackParams(track,AliESDtrack::kTOFin);
+ new(aTOFTrack[fNseedsTOF]) AliTOFtrack(*track);
+ fNseedsTOF++;
+ seedsTOF3++;
+
+ AliDebug(1,Form(" After propagation till inner TOF radius, ESDtrackLength=%f, TOFtrackLength=%f",t->GetIntegratedLength(),track->GetIntegratedLength()));
+ }
+ delete track;
+
+ }
+
}
- // Propagate the rest of TPCbp
- else {
+ else { // Propagate the rest of TPCbp
+
+ AliDebug(1,Form(" Before propagation till inner TOF radius, ESDtrackLength=%f, TOFtrackLength=%f",t->GetIntegratedLength(),track->GetIntegratedLength()));
+
if ( track->PropagateToInnerTOF() ) {
AliDebug(1,Form(" TRD propagated track till rho = %fcm."
}
}
- AliInfo(Form("Number of TOF seeds = %d (Type 1 = %d, Type 2 = %d)",fNseedsTOF,seedsTOF1,seedsTOF2));
+ AliInfo(Form("Number of TOF seeds = %d (kTRDout371 = %d, kTRDoutLess371 = %d, !kTRDout = %d)",fNseedsTOF,seedsTOF1,seedsTOF3,seedsTOF2));
// Sort according uncertainties on track position
fTracks->Sort();
//start propagation: go to the average TOF pad middle plane at ~379.5 cm
- Float_t xTOF = sensRadius;
+ // First of all, propagate the track...
+ Float_t xTOF = sensRadius;
+ if (!(trackTOFin->PropagateTo(xTOF))) {
+ delete trackTOFin;
+ continue;
+ }
+
+ // ...and then, if necessary, rotate the track
Double_t ymax = xTOF*TMath::Tan(0.5*AliTOFGeometry::GetAlpha());
- Bool_t skip = kFALSE;
- Double_t ysect = trackTOFin->GetYat(xTOF,skip);
- if (skip) break;
+ Double_t ysect = trackTOFin->GetY();
if (ysect > ymax) {
- if (!trackTOFin->Rotate(AliTOFGeometry::GetAlpha())) {
- break;
+ if (!(trackTOFin->Rotate(AliTOFGeometry::GetAlpha()))) {
+ delete trackTOFin;
+ continue;
}
} else if (ysect <-ymax) {
- if (!trackTOFin->Rotate(-AliTOFGeometry::GetAlpha())) {
- break;
+ if (!(trackTOFin->Rotate(-AliTOFGeometry::GetAlpha()))) {
+ delete trackTOFin;
+ continue;
}
}
- if(!trackTOFin->PropagateTo(xTOF)) {
- break;
- }
AliTOFcluster *bestCluster=0;
fngoodmatch++;
AliDebug(2,Form(" track label good %5d",trackTOFin->GetLabel()));
- }
- else{
+ } else {
fnbadmatch++;
AliDebug(2,Form(" track label bad %5d",trackTOFin->GetLabel()));
}
//Propagate the track to the best matched cluster
- trackTOFin->PropagateTo(bestCluster);
+ if (!(trackTOFin->PropagateTo(bestCluster))) {
+ delete trackTOFin;
+ continue;
+ }
+
+ // If necessary, rotate the track
+ Double_t yATxMax = trackTOFin->GetX()*TMath::Tan(0.5*AliTOFGeometry::GetAlpha());
+ Double_t yATx = trackTOFin->GetY();
+ if (yATx > yATxMax) {
+ if (!(trackTOFin->Rotate(AliTOFGeometry::GetAlpha()))) {
+ delete trackTOFin;
+ continue;
+ }
+ } else if (yATx <-yATxMax) {
+ if (!(trackTOFin->Rotate(-AliTOFGeometry::GetAlpha()))) {
+ delete trackTOFin;
+ continue;
+ }
+ }
// Fill the track residual histograms.
FillResiduals(trackTOFin,bestCluster,kFALSE);
// no longer there - all info is in the ESDs now
delete trackTOFin;
+
}
}
//write histos for Digits/Reco QA and Calibration
TDirectory *dir = gDirectory;
- TFile *logFile = 0;
+ //TFile *logFile = 0;
TFile *logFileTOF = 0;
TSeqCollection *list = gROOT->GetListOfFiles();
int n = list->GetEntries();
+ /*
for(int i=0; i<n; i++) {
logFile = (TFile*)list->At(i);
if (strstr(logFile->GetName(), "AliESDs.root")) break;
}
-
+ */
Bool_t isThere=kFALSE;
for(int i=0; i<n; i++) {
logFileTOF = (TFile*)list->At(i);
AliError(Form("File TOFQA.root not found!! not wring histograms...."));
return;
}
- logFile->cd();
+ //logFile->cd();
+ logFileTOF->cd();
fHDigClusMap->Write(fHDigClusMap->GetName(), TObject::kOverwrite);
fHDigNClus->Write(fHDigNClus->GetName(), TObject::kOverwrite);
fHDigClusTime->Write(fHDigClusTime->GetName(), TObject::kOverwrite);
fHRecSigZVsP->Write(fHRecSigZVsP->GetName(), TObject::kOverwrite);
fHRecSigYVsPWin->Write(fHRecSigYVsPWin->GetName(), TObject::kOverwrite);
fHRecSigZVsPWin->Write(fHRecSigZVsPWin->GetName(), TObject::kOverwrite);
- logFile->Flush();
+ //logFile->Flush();
+ logFileTOF->Flush();
dir->cd();