X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TOF%2FAliTOFtrackerV1.cxx;h=bbcc84ffb8d265eb95a3bfe404fa8ede596ffd9c;hb=bfbc19759046e4fa0311b4cee73e8d612648a435;hp=0686365f1a4e180ac5d043dd35d02761b2c4f82c;hpb=57bd70af0373e6797391b57031aa5ad06e79c306;p=u%2Fmrichter%2FAliRoot.git diff --git a/TOF/AliTOFtrackerV1.cxx b/TOF/AliTOFtrackerV1.cxx index 0686365f1a4..bbcc84ffb8d 100644 --- a/TOF/AliTOFtrackerV1.cxx +++ b/TOF/AliTOFtrackerV1.cxx @@ -80,7 +80,9 @@ AliTOFtrackerV1::AliTOFtrackerV1(): fHRecSigYVsPWin(0x0), fHRecSigZVsPWin(0x0) { - //AliTOFtrackerV1 main Ctor + //AliTOFtrackerV1 main Ctor + + for (Int_t ii=0; iiDelete(); + } //_____________________________________________________________________________ void AliTOFtrackerV1::GetPidSettings(AliESDpid *esdPID) { @@ -271,7 +278,7 @@ Int_t AliTOFtrackerV1::PropagateBack(AliESDEvent * const event) { covB[13],covA[13], covB[14],covA[14] )); - AliDebug(3,Form(" %6d %f %f %f %f % %6d %3d %f %f %f %f %f %f", + AliDebug(3,Form(" %6d %f %f %f %f %f %6d %3d %f %f %f %f %f %f", i, t->GetTOFsignalRaw(), t->GetTOFsignal(), @@ -298,6 +305,7 @@ void AliTOFtrackerV1::CollectESD() { //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; @@ -309,26 +317,57 @@ void AliTOFtrackerV1::CollectESD() { 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." @@ -345,7 +384,7 @@ void AliTOFtrackerV1::CollectESD() { } } - 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(); @@ -362,7 +401,7 @@ void AliTOFtrackerV1::MatchTracks( ){ Float_t dY=AliTOFGeometry::XPad(); Float_t dZ=AliTOFGeometry::ZPad(); - const Float_t kTimeOffset = 32.; // time offset for tracking algorithm [ps] + const Float_t kTimeOffset = 0.; // time offset for tracking algorithm [ps] const Int_t kncmax = 100; Float_t sensRadius = fkRecoParam->GetSensRadius(); @@ -442,23 +481,27 @@ void AliTOFtrackerV1::MatchTracks( ){ //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; @@ -502,14 +545,31 @@ void AliTOFtrackerV1::MatchTracks( ){ 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); @@ -594,6 +654,7 @@ void AliTOFtrackerV1::MatchTracks( ){ // no longer there - all info is in the ESDs now delete trackTOFin; + } } @@ -819,16 +880,17 @@ void AliTOFtrackerV1::SaveCheckHists() { //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; iAt(i); if (strstr(logFile->GetName(), "AliESDs.root")) break; } - + */ Bool_t isThere=kFALSE; for(int i=0; iAt(i); @@ -842,7 +904,8 @@ void AliTOFtrackerV1::SaveCheckHists() { 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); @@ -854,7 +917,8 @@ void AliTOFtrackerV1::SaveCheckHists() { 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();