X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TOF%2FAliTOFtrackerV1.cxx;h=270c33f3e96a8a093ad64f005282e99b311cdca5;hb=0937b6b05230df735b3e5933a4925fdfbb6bf9e5;hp=aa0f2bae0792f69b587bcd38cd028f663e6d66fb;hpb=6ef25b64efd5efedcc9647b884c10012d5758ef4;p=u%2Fmrichter%2FAliRoot.git diff --git a/TOF/AliTOFtrackerV1.cxx b/TOF/AliTOFtrackerV1.cxx index aa0f2bae079..270c33f3e96 100644 --- a/TOF/AliTOFtrackerV1.cxx +++ b/TOF/AliTOFtrackerV1.cxx @@ -30,6 +30,7 @@ #include #include +#include #include #include #include @@ -38,6 +39,7 @@ #include "AliESDtrack.h" #include "AliESDEvent.h" +#include "AliESDpid.h" #include "AliLog.h" #include "AliTrackPointArray.h" #include "AliGeomManager.h" @@ -49,16 +51,14 @@ #include "AliTOFGeometry.h" #include "AliTOFtrackerV1.h" #include "AliTOFtrack.h" -#include "AliTOFpidESD.h" -extern TROOT *gROOT; +//extern TROOT *gROOT; ClassImp(AliTOFtrackerV1) //_____________________________________________________________________________ AliTOFtrackerV1::AliTOFtrackerV1(): - fRecoParam(0x0), - fPid(0x0), + fkRecoParam(0x0), fN(0), fNseeds(0), fNseedsTOF(0), @@ -67,7 +67,7 @@ AliTOFtrackerV1::AliTOFtrackerV1(): fnunmatch(0), fnmatch(0), fTracks(new TClonesArray("AliTOFtrack")), - fSeeds(new TClonesArray("AliESDtrack")), + fSeeds(new TObjArray(100)), fHDigClusMap(0x0), fHDigNClus(0x0), fHDigClusTime(0x0), @@ -80,7 +80,9 @@ AliTOFtrackerV1::AliTOFtrackerV1(): fHRecSigYVsPWin(0x0), fHRecSigZVsPWin(0x0) { - //AliTOFtrackerV1 main Ctor + //AliTOFtrackerV1 main Ctor + + for (Int_t ii=0; iiGetCacheFlag())){ - delete fRecoParam; + delete fkRecoParam; } - delete fPid; delete fHDigClusMap; delete fHDigNClus; delete fHDigClusTime; @@ -118,30 +119,44 @@ AliTOFtrackerV1::~AliTOFtrackerV1() { delete fSeeds; fSeeds=0x0; } + + + for (Int_t ii=0; iiDelete(); + +} +//_____________________________________________________________________________ +void AliTOFtrackerV1::GetPidSettings(AliESDpid *esdPID) { + // + // Sets TOF resolution from RecoParams + // + if (fkRecoParam) + esdPID->GetTOFResponse().SetTimeResolution(fkRecoParam->GetTimeResolution()); + else + AliWarning("fkRecoParam not yet set; cannot set PID settings"); } //_____________________________________________________________________________ -Int_t AliTOFtrackerV1::PropagateBack(AliESDEvent* event) { +Int_t AliTOFtrackerV1::PropagateBack(AliESDEvent * const event) { // // Gets seeds from ESD event and Match with TOF Clusters // - // initialize RecoParam for current event + if (fN==0) { + AliInfo("No TOF recPoints to be matched with reconstructed tracks"); + return 0; + } - AliInfo("Initializing params for TOF... "); + // initialize RecoParam for current event + AliDebug(1,"Initializing params for TOF"); - fRecoParam = AliTOFReconstructor::GetRecoParam(); // instantiate reco param from STEER... + fkRecoParam = AliTOFReconstructor::GetRecoParam(); // instantiate reco param from STEER... - if (fRecoParam == 0x0) { + if (fkRecoParam == 0x0) { AliFatal("No Reco Param found for TOF!!!"); } - //fRecoParam->Dump(); - //if(fRecoParam->GetApplyPbPbCuts())fRecoParam=fRecoParam->GetPbPbparam(); - //fRecoParam->PrintParameters(); - - Double_t parPID[2]; - parPID[0]=fRecoParam->GetTimeResolution(); - parPID[1]=fRecoParam->GetTimeNSigma(); - fPid=new AliTOFpidESD(parPID); + //fkRecoParam->Dump(); + //if(fkRecoParam->GetApplyPbPbCuts())fkRecoParam=fkRecoParam->GetPbPbparam(); + //fkRecoParam->PrintParameters(); //Initialise some counters @@ -154,19 +169,21 @@ Int_t AliTOFtrackerV1::PropagateBack(AliESDEvent* event) { Int_t ntrk=event->GetNumberOfTracks(); fNseeds = ntrk; - TClonesArray &aESDTrack = *fSeeds; - //Load ESD tracks into a local Array of ESD Seeds - - for (Int_t i=0; iGetTrack(i); - new(aESDTrack[i]) AliESDtrack(*t); + for (Int_t i=0; iAddLast(event->GetTrack(i)); + event->GetTrack(i)->SetESDEvent(event); } //Prepare ESD tracks candidates for TOF Matching CollectESD(); + if (fNseeds==0 || fNseedsTOF==0) { + AliInfo("No seeds to try TOF match"); + return 0; + } + //Matching Step MatchTracks(); @@ -176,7 +193,7 @@ Int_t AliTOFtrackerV1::PropagateBack(AliESDEvent* event) { for (Int_t i=0; iGetTrack(i); - AliESDtrack *seed =(AliESDtrack*)fSeeds->UncheckedAt(i); + AliESDtrack *seed =(AliESDtrack*)fSeeds->At(i); if ( (seed->GetStatus()&AliESDtrack::kTOFin)!=0 ) { t->SetStatus(AliESDtrack::kTOFin); @@ -189,18 +206,20 @@ Int_t AliTOFtrackerV1::PropagateBack(AliESDEvent* event) { t->SetTOFsignalRaw(seed->GetTOFsignalRaw()); t->SetTOFsignalDz(seed->GetTOFsignalDz()); t->SetTOFsignalDx(seed->GetTOFsignalDx()); + t->SetTOFDeltaBC(seed->GetTOFDeltaBC()); + t->SetTOFL0L1(seed->GetTOFL0L1()); t->SetTOFCalChannel(seed->GetTOFCalChannel()); Int_t tlab[3]; seed->GetTOFLabel(tlab); t->SetTOFLabel(tlab); - Double_t alphaA = dynamic_cast(t)->GetAlpha(); - Double_t xA = dynamic_cast(t)->GetX(); - Double_t yA = dynamic_cast(t)->GetY(); - Double_t zA = dynamic_cast(t)->GetZ(); - Double_t p1A = dynamic_cast(t)->GetSnp(); - Double_t p2A = dynamic_cast(t)->GetTgl(); - Double_t p3A = dynamic_cast(t)->GetSigned1Pt(); - const Double_t *covA = dynamic_cast(t)->GetCovariance(); + Double_t alphaA = (Double_t)t->GetAlpha(); + Double_t xA = (Double_t)t->GetX(); + Double_t yA = (Double_t)t->GetY(); + Double_t zA = (Double_t)t->GetZ(); + Double_t p1A = (Double_t)t->GetSnp(); + Double_t p2A = (Double_t)t->GetTgl(); + Double_t p3A = (Double_t)t->GetSigned1Pt(); + const Double_t *covA = (Double_t*)t->GetCovariance(); // Make attention, please: // AliESDtrack::fTOFInfo array does not be stored in the AliESDs.root file @@ -223,34 +242,34 @@ Int_t AliTOFtrackerV1::PropagateBack(AliESDEvent* event) { AliTOFtrack *track = new AliTOFtrack(*seed); t->UpdateTrackParams(track,AliESDtrack::kTOFout); // to be checked - AdC delete track; - Double_t time[10]; t->GetIntegratedTimes(time); + Double_t time[AliPID::kSPECIESC]; t->GetIntegratedTimes(time); */ - Double_t time[10]; seed->GetIntegratedTimes(time); + Double_t time[AliPID::kSPECIESC]; seed->GetIntegratedTimes(time,AliPID::kSPECIESC); t->SetIntegratedTimes(time); Double_t length = seed->GetIntegratedLength(); t->SetIntegratedLength(length); - Double_t alphaB = dynamic_cast(t)->GetAlpha(); - Double_t xB = dynamic_cast(t)->GetX(); - Double_t yB = dynamic_cast(t)->GetY(); - Double_t zB = dynamic_cast(t)->GetZ(); - Double_t p1B = dynamic_cast(t)->GetSnp(); - Double_t p2B = dynamic_cast(t)->GetTgl(); - Double_t p3B = dynamic_cast(t)->GetSigned1Pt(); - const Double_t *covB = dynamic_cast(t)->GetCovariance(); - AliDebug(2,"Track params -now(before)-:"); - AliDebug(2,Form(" X: %f(%f), Y: %f(%f), Z: %f(%f) --- alpha: %f(%f)", + Double_t alphaB = (Double_t)t->GetAlpha(); + Double_t xB = (Double_t)t->GetX(); + Double_t yB = (Double_t)t->GetY(); + Double_t zB = (Double_t)t->GetZ(); + Double_t p1B = (Double_t)t->GetSnp(); + Double_t p2B = (Double_t)t->GetTgl(); + Double_t p3B = (Double_t)t->GetSigned1Pt(); + const Double_t *covB = (Double_t*)t->GetCovariance(); + AliDebug(3,"Track params -now(before)-:"); + AliDebug(3,Form(" X: %f(%f), Y: %f(%f), Z: %f(%f) --- alpha: %f(%f)", xB,xA, yB,yA, zB,zA, alphaB,alphaA)); - AliDebug(2,Form(" p1: %f(%f), p2: %f(%f), p3: %f(%f)", + AliDebug(3,Form(" p1: %f(%f), p2: %f(%f), p3: %f(%f)", p1B,p1A, p2B,p2A, p3B,p3A)); - AliDebug(2,Form(" cov1: %f(%f), cov2: %f(%f), cov3: %f(%f)" + AliDebug(3,Form(" cov1: %f(%f), cov2: %f(%f), cov3: %f(%f)" " cov4: %f(%f), cov5: %f(%f), cov6: %f(%f)" " cov7: %f(%f), cov8: %f(%f), cov9: %f(%f)" " cov10: %f(%f), cov11: %f(%f), cov12: %f(%f)" @@ -271,7 +290,7 @@ Int_t AliTOFtrackerV1::PropagateBack(AliESDEvent* 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(2,Form(" TOF params: %6d %f %f %f %f %f %6d %3d %f", i, t->GetTOFsignalRaw(), t->GetTOFsignal(), @@ -280,40 +299,15 @@ Int_t AliTOFtrackerV1::PropagateBack(AliESDEvent* event) { t->GetTOFsignalDx(), t->GetTOFCalChannel(), t->GetTOFcluster(), - t->GetIntegratedLength(), - time[0], time[1], time[2], time[3], time[4] - ) - ); + t->GetIntegratedLength())); + AliDebug(2,Form(" %f %f %f %f %f %f %f %f %f", + time[0], time[1], time[2], time[3], time[4], time[5], time[6], time[7], time[8])); } } } - //Handle Time Zero information - - Double_t timeZero=0.; - Double_t timeZeroMax=99999.; - Bool_t usetimeZero = fRecoParam->UseTimeZero(); - Bool_t timeZeroFromT0 = fRecoParam->GetTimeZerofromT0(); - Bool_t timeZeroFromTOF = fRecoParam->GetTimeZerofromTOF(); - - AliDebug(2,Form("Use Time Zero?: %d",usetimeZero)); - AliDebug(2,Form("Time Zero from T0? : %d",timeZeroFromT0)); - AliDebug(2,Form("Time Zero From TOF? : %d",timeZeroFromTOF)); - - if(usetimeZero){ - if(timeZeroFromT0){ - timeZero=GetTimeZerofromT0(event); - } - if(timeZeroFromTOF && (timeZero>timeZeroMax || !timeZeroFromT0)){ - timeZero=GetTimeZerofromTOF(event); - } - } - AliDebug(2,Form("time Zero used in PID: %f",timeZero)); - //Make TOF PID - fPid->MakePID(event,timeZero); - fSeeds->Clear(); - fTracks->Clear(); + fTracks->Delete(); return 0; } @@ -322,37 +316,69 @@ 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; for (Int_t i=0; iUncheckedAt(i); + AliESDtrack *t =(AliESDtrack*)fSeeds->At(i); if ((t->GetStatus()&AliESDtrack::kTPCout)==0)continue; 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." @@ -369,7 +395,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(); @@ -386,32 +412,32 @@ 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 = fRecoParam->GetSensRadius(); - Float_t scaleFact = fRecoParam->GetWindowScaleFact(); - Float_t dyMax=fRecoParam->GetWindowSizeMaxY(); - Float_t dzMax=fRecoParam->GetWindowSizeMaxZ(); - Double_t maxChi2=fRecoParam->GetMaxChi2(); - Bool_t timeWalkCorr = fRecoParam->GetTimeWalkCorr(); - AliDebug(1,"++++++++++++++TOF Reconstruction Parameters:++++++++++++ \n"); + Float_t sensRadius = fkRecoParam->GetSensRadius(); + Float_t scaleFact = fkRecoParam->GetWindowScaleFact(); + Float_t dyMax=fkRecoParam->GetWindowSizeMaxY(); + Float_t dzMax=fkRecoParam->GetWindowSizeMaxZ(); + Double_t maxChi2=fkRecoParam->GetMaxChi2(); + Bool_t timeWalkCorr = fkRecoParam->GetTimeWalkCorr(); + AliDebug(1,"++++++++++++++TOF Reconstruction Parameters:++++++++++++"); AliDebug(1,Form("TOF sens radius: %f",sensRadius)); AliDebug(1,Form("TOF Window scale factor: %f",scaleFact)); AliDebug(1,Form("TOF Window max dy: %f",dyMax)); AliDebug(1,Form("TOF Window max dz: %f",dzMax)); AliDebug(1,Form("TOF Max Chi2: %f",maxChi2)); AliDebug(1,Form("Time Walk Correction? : %d",timeWalkCorr)); - + AliDebug(1,"++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); //The matching loop for (Int_t iseed=0; iseedUncheckedAt(iseed); - AliESDtrack *t =(AliESDtrack*)fSeeds->UncheckedAt(track->GetSeedIndex()); + AliESDtrack *t =(AliESDtrack*)fSeeds->At(track->GetSeedIndex()); //if ( t->GetTOFsignal()>0. ) continue; if ( (t->GetStatus()&AliESDtrack::kTOFout)!=0 ) continue; - AliTOFtrack *trackTOFin =new AliTOFtrack(*track); + AliTOFtrack *trackTOFin = new AliTOFtrack(*track); // Determine a window around the track Double_t x,par[5]; trackTOFin->GetExternalParameters(x,par); @@ -424,16 +450,16 @@ void AliTOFtrackerV1::MatchTracks( ){ } Double_t z = par[1]; - Double_t dz = scaleFact*3.*TMath::Sqrt(TMath::Abs(cov[2])+dZ*dZ/12.); - Double_t dphi = scaleFact*3.*TMath::Sqrt(TMath::Abs(cov[0])+dY*dY/12.)/sensRadius; + Double_t dz = scaleFact*3.*TMath::Sqrt(TMath::Abs(cov[2])+dZ*dZ/12.); + Double_t dphi = scaleFact*3.*TMath::Sqrt(TMath::Abs(cov[0])+dY*dY/12.)/sensRadius; Double_t phi=TMath::ATan2(par[0],x) + trackTOFin->GetAlpha(); if (phi<-TMath::Pi())phi+=2*TMath::Pi(); if (phi>=TMath::Pi())phi-=2*TMath::Pi(); //upper limit on window's size. - if(dz> dzMax) dz=dzMax; - if(dphi*sensRadius> dyMax) dphi=dyMax/sensRadius; + if (dz> dzMax) dz=dzMax; + if (dphi*sensRadius> dyMax) dphi=dyMax/sensRadius; // find the clusters inside the selected window Int_t nc=0; @@ -446,9 +472,9 @@ void AliTOFtrackerV1::MatchTracks( ){ AliWarning("No more matchable clusters can be stored! Please, increase the corresponding vectors size."); break; /* R+ fix (buffer overflow protection) */ } - if(c->GetZ() > z+dz) break; - if(c->IsUsed()) continue; - if(!c->GetStatus()) { + if (c->GetZ() > z+dz) break; + if (c->IsUsed()) continue; + if (!c->GetStatus()) { AliDebug(1,"Cluster in channel declared bad!"); continue; // skip bad channels as declared in OCDB } @@ -466,23 +492,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; @@ -499,14 +529,16 @@ void AliTOFtrackerV1::MatchTracks( ){ } if (!bestCluster) { // no matching , go to the next track + AliDebug(1,Form("No track points for the track number %d",iseed)); fnunmatch++; delete trackTOFin; continue; } fnmatch++; + AliDebug(1,Form(" Matched TOF cluster %d for the track number %d",idclus,iseed)); - AliDebug(2, Form("%7i %7i %10i %10i %10i %10i %7i", + AliDebug(3, Form("%7i %7i %10i %10i %10i %10i %7i", iseed, fnmatch-1, TMath::Abs(trackTOFin->GetLabel()), @@ -526,14 +558,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); @@ -543,7 +592,7 @@ void AliTOFtrackerV1::MatchTracks( ){ Double_t dzTW=trackTOFin->GetZ()-bestCluster->GetZ(); // in cm - in the ALICE RF - dzTW/=TMath::Cos(tiltangle); // from ALICE/tracking RF to pad RF (1) dzTW=-dzTW; // from ALICE/tracking RF to pad RF (2) - if (tiltangle!=0.) AliDebug(2,Form(" rho_track = %f --- rho_cluster = %f ",trackTOFin->GetX(),bestCluster->GetX())); + if (tiltangle!=0.) AliDebug(3,Form(" rho_track = %f --- rho_cluster = %f ",trackTOFin->GetX(),bestCluster->GetX())); //update the ESD track and delete the TOFtrack t->UpdateTrackParams(trackTOFin,AliESDtrack::kTOFout); @@ -558,12 +607,15 @@ void AliTOFtrackerV1::MatchTracks( ){ Float_t deltaY = trackTOFin->GetY()-bestCluster->GetY(); t->SetTOFsignalDx(deltaY); + t->SetTOFDeltaBC(bestCluster->GetDeltaBC()); + t->SetTOFL0L1(bestCluster->GetL0L1Latency()); + Float_t distR = (trackTOFin->GetX()-bestCluster->GetX())* (trackTOFin->GetX()-bestCluster->GetX()); distR+=deltaY*deltaY; distR+=dzTW*dzTW; distR = TMath::Sqrt(distR); - Float_t info[10] = {distR, deltaY, dzTW, + Float_t info[10] = {distR, deltaY, static_cast(dzTW), 0.,0.,0.,0.,0.,0.,0.}; t->SetTOFInfo(info); @@ -581,27 +633,33 @@ void AliTOFtrackerV1::MatchTracks( ){ tlab[0]=bestCluster->GetLabel(0); tlab[1]=bestCluster->GetLabel(1); tlab[2]=bestCluster->GetLabel(2); - AliDebug(2,Form(" tdc time of the matched track %6d = ",bestCluster->GetTDC())); + AliDebug(3,Form(" tdc time of the matched track %6d = ",bestCluster->GetTDC())); Double_t tof=AliTOFGeometry::TdcBinWidth()*bestCluster->GetTDC()+kTimeOffset; // in ps - AliDebug(2,Form(" tof time of the matched track: %f = ",tof)); + AliDebug(3,Form(" tof time of the matched track: %f = ",tof)); Double_t tofcorr=tof; if(timeWalkCorr)tofcorr=CorrectTimeWalk(dzTW,tof); - AliDebug(2,Form(" tof time of the matched track, after TW corr: %f = ",tofcorr)); + AliDebug(3,Form(" tof time of the matched track, after TW corr: %f = ",tofcorr)); //Set TOF time signal and pointer to the matched cluster t->SetTOFsignal(tofcorr); t->SetTOFcluster(idclus); // pointing to the recPoints tree t->SetTOFLabel(tlab); - AliDebug(2,Form(" Setting TOF raw time: %f z distance: %f corrected time: %f",rawTime,dzTW,tofcorr)); + AliDebug(3,Form(" Setting TOF raw time: %f z distance: %f corrected time: %f",rawTime,dzTW,tofcorr)); Double_t mom=t->GetP(); - AliDebug(2,Form(" Momentum for track %d -> %f", iseed,mom)); + AliDebug(3,Form(" Momentum for track %d -> %f", iseed,mom)); // Fill Reco-QA histos for Reconstruction fHRecNClus->Fill(nc); fHRecChi2->Fill(bestChi2); fHRecDistZ->Fill(dzTW); - fHRecSigYVsP->Fill(mom,TMath::Sqrt(cov[0])); - fHRecSigZVsP->Fill(mom,TMath::Sqrt(cov[2])); + if (cov[0]>=0.) + fHRecSigYVsP->Fill(mom,TMath::Sqrt(cov[0])); + else + fHRecSigYVsP->Fill(mom,-TMath::Sqrt(-cov[0])); + if (cov[2]>=0.) + fHRecSigZVsP->Fill(mom,TMath::Sqrt(cov[2])); + else + fHRecSigZVsP->Fill(mom,-TMath::Sqrt(-cov[2])); fHRecSigYVsPWin->Fill(mom,dphi*sensRadius); fHRecSigZVsPWin->Fill(mom,dz); @@ -609,6 +667,7 @@ void AliTOFtrackerV1::MatchTracks( ){ // no longer there - all info is in the ESDs now delete trackTOFin; + } } @@ -834,16 +893,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); @@ -857,7 +917,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); @@ -869,13 +930,14 @@ 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(); } //_________________________________________________________________________ -Float_t AliTOFtrackerV1::CorrectTimeWalk( Float_t dist, Float_t tof) { +Float_t AliTOFtrackerV1::CorrectTimeWalk( Float_t dist, Float_t tof) const { //dummy, for the moment Float_t tofcorr=0.; @@ -888,7 +950,7 @@ Float_t AliTOFtrackerV1::CorrectTimeWalk( Float_t dist, Float_t tof) { return tofcorr; } //_________________________________________________________________________ -Float_t AliTOFtrackerV1::GetTimeZerofromT0(AliESDEvent *event) const { +Float_t AliTOFtrackerV1::GetTimeZerofromT0(const AliESDEvent * const event) const { //Returns TimeZero as measured by T0 detector