#include "AliGeomManager.h"
#include "AliESDtrack.h"
#include "AliESDEvent.h"
+#include "AliESDpid.h"
#include "AliLog.h"
#include "AliTrackPointArray.h"
#include "AliCDBManager.h"
-#include "AliTOFpidESD.h"
+//#include "AliTOFpidESD.h"
#include "AliTOFRecoParam.h"
#include "AliTOFReconstructor.h"
#include "AliTOFcluster.h"
//_____________________________________________________________________________
AliTOFtracker::AliTOFtracker():
- fRecoParam(0x0),
+ fkRecoParam(0x0),
fGeom(0x0),
- fPid(0x0),
fN(0),
fNseeds(0),
fNseedsTOF(0),
SaveCheckHists();
if(!(AliCDBManager::Instance()->GetCacheFlag())){
- delete fRecoParam;
+ delete fkRecoParam;
}
delete fGeom;
- delete fPid;
delete fHDigClusMap;
delete fHDigNClus;
delete fHDigClusTime;
}
//_____________________________________________________________________________
-Int_t AliTOFtracker::PropagateBack(AliESDEvent* event) {
+void AliTOFtracker::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 AliTOFtracker::PropagateBack(AliESDEvent * const event) {
//
// Gets seeds from ESD event and Match with TOF Clusters
//
// initialize RecoParam for current event
+ AliDebug(1,"Initializing params for TOF");
- AliInfo("Initializing params for TOF... ");
+ fkRecoParam = AliTOFReconstructor::GetRecoParam(); // instantiate reco param from STEER...
- fRecoParam = 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
//Second Step with Looser Matching Criterion
MatchTracks(kTRUE);
- AliInfo(Form("Number of matched tracks: %d",fnmatch));
- AliInfo(Form("Number of good matched tracks: %d",fngoodmatch));
- AliInfo(Form("Number of bad matched tracks: %d",fnbadmatch));
+ AliInfo(Form("Number of matched tracks = %d (good = %d, bad = %d)",fnmatch,fngoodmatch,fnbadmatch));
//Update the matched ESD tracks
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);
- Float_t info[10]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
- seed->GetTOFInfo(info);
+ Double_t alphaA = dynamic_cast<AliExternalTrackParam*>(t)->GetAlpha();
+ Double_t xA = dynamic_cast<AliExternalTrackParam*>(t)->GetX();
+ Double_t yA = dynamic_cast<AliExternalTrackParam*>(t)->GetY();
+ Double_t zA = dynamic_cast<AliExternalTrackParam*>(t)->GetZ();
+ Double_t p1A = dynamic_cast<AliExternalTrackParam*>(t)->GetSnp();
+ Double_t p2A = dynamic_cast<AliExternalTrackParam*>(t)->GetTgl();
+ Double_t p3A = dynamic_cast<AliExternalTrackParam*>(t)->GetSigned1Pt();
+ const Double_t *covA = dynamic_cast<AliExternalTrackParam*>(t)->GetCovariance();
+
+ // Make attention, please:
+ // AliESDtrack::fTOFInfo array does not be stored in the AliESDs.root file
+ // it is there only for a check during the reconstruction step.
+ Float_t info[10]; seed->GetTOFInfo(info);
t->SetTOFInfo(info);
- AliDebug(2,Form(" distance=%f; residual in the pad reference frame: dX=%f, dZ=%f", info[0],info[1],info[2]));
-
- AliTOFtrack *track = new AliTOFtrack(*seed);
- t->UpdateTrackParams(track,AliESDtrack::kTOFout); // to be checked - AdC
- delete track;
- Double_t time[10]; t->GetIntegratedTimes(time);
- AliDebug(2,Form(" %6d %f %f %f %f %f %6d %3d %f %f %f %f %f %f",
+ AliDebug(3,Form(" distance=%f; residual in the pad reference frame: dX=%f, dZ=%f", info[0],info[1],info[2]));
+
+ // Check done:
+ // by calling the AliESDtrack::UpdateTrackParams,
+ // the current track parameters are changed
+ // and it could cause refit problems.
+ // We need to update only the following track parameters:
+ // the track length and expected times.
+ // Removed AliESDtrack::UpdateTrackParams call
+ // Called AliESDtrack::SetIntegratedTimes(...) and
+ // AliESDtrack::SetIntegratedLength() routines.
+ /*
+ 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[10]; seed->GetIntegratedTimes(time);
+ t->SetIntegratedTimes(time);
+
+ Double_t length = seed->GetIntegratedLength();
+ t->SetIntegratedLength(length);
+
+ Double_t alphaB = dynamic_cast<AliExternalTrackParam*>(t)->GetAlpha();
+ Double_t xB = dynamic_cast<AliExternalTrackParam*>(t)->GetX();
+ Double_t yB = dynamic_cast<AliExternalTrackParam*>(t)->GetY();
+ Double_t zB = dynamic_cast<AliExternalTrackParam*>(t)->GetZ();
+ Double_t p1B = dynamic_cast<AliExternalTrackParam*>(t)->GetSnp();
+ Double_t p2B = dynamic_cast<AliExternalTrackParam*>(t)->GetTgl();
+ Double_t p3B = dynamic_cast<AliExternalTrackParam*>(t)->GetSigned1Pt();
+ const Double_t *covB = dynamic_cast<AliExternalTrackParam*>(t)->GetCovariance();
+ AliDebug(2,"Track params -now(before)-:");
+ AliDebug(2,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)",
+ p1B,p1A,
+ p2B,p2A,
+ p3B,p3A));
+ AliDebug(2,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)"
+ " cov13: %f(%f), cov14: %f(%f), cov15: %f(%f)",
+ covB[0],covA[0],
+ covB[1],covA[1],
+ covB[2],covA[2],
+ covB[3],covA[3],
+ covB[4],covA[4],
+ covB[5],covA[5],
+ covB[6],covA[6],
+ covB[7],covA[7],
+ covB[8],covA[8],
+ covB[9],covA[9],
+ covB[10],covA[10],
+ covB[11],covA[11],
+ covB[12],covA[12],
+ covB[13],covA[13],
+ covB[14],covA[14]
+ ));
+ AliDebug(3,Form(" TOF params: %6d %f %f %f %f %f %6d %3d %f %f %f %f %f %f",
i,
t->GetTOFsignalRaw(),
t->GetTOFsignal(),
}
}
- //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);
+ // Now done in AliESDpid
+ // fPid->MakePID(event,timeZero);
fSeeds->Clear();
fTracks->Clear();
}
}
- AliInfo(Form("Number of TOF seeds %d",fNseedsTOF));
- AliInfo(Form("Number of TOF seeds Type 1 %d",seedsTOF1));
- AliInfo(Form("Number of TOF seeds Type 2 %d",seedsTOF2));
+ AliInfo(Form("Number of TOF seeds = %d (Type 1 = %d, Type 2 = %d)",fNseedsTOF,seedsTOF1,seedsTOF2));
// Sort according uncertainties on track position
fTracks->Sort();
Float_t dY=AliTOFGeometry::XPad();
Float_t dZ=AliTOFGeometry::ZPad();
- Float_t sensRadius = fRecoParam->GetSensRadius();
- Float_t stepSize = fRecoParam->GetStepSize();
- Float_t scaleFact = fRecoParam->GetWindowScaleFact();
- Float_t dyMax=fRecoParam->GetWindowSizeMaxY();
- Float_t dzMax=fRecoParam->GetWindowSizeMaxZ();
- Float_t dCut=fRecoParam->GetDistanceCut();
- Double_t maxChi2=fRecoParam->GetMaxChi2TRD();
- Bool_t timeWalkCorr = fRecoParam->GetTimeWalkCorr();
+ Float_t sensRadius = fkRecoParam->GetSensRadius();
+ Float_t stepSize = fkRecoParam->GetStepSize();
+ Float_t scaleFact = fkRecoParam->GetWindowScaleFact();
+ Float_t dyMax=fkRecoParam->GetWindowSizeMaxY();
+ Float_t dzMax=fkRecoParam->GetWindowSizeMaxZ();
+ Float_t dCut=fkRecoParam->GetDistanceCut();
+ Double_t maxChi2=fkRecoParam->GetMaxChi2TRD();
+ Bool_t timeWalkCorr = fkRecoParam->GetTimeWalkCorr();
if(!mLastStep){
AliDebug(1,"++++++++++++++TOF Reconstruction Parameters:++++++++++++ \n");
AliDebug(1,Form("TOF sens radius: %f",sensRadius));
t->SetTOFsignalRaw(rawTime);
t->SetTOFsignalDz(mindistZ);
t->SetTOFsignalDx(mindistY);
+ t->SetTOFDeltaBC(c->GetDeltaBC());
+ t->SetTOFL0L1(c->GetL0L1Latency());
Float_t info[10] = {mindist,mindistY,mindistZ,
0.,0.,0.,0.,0.,0.,0.};
dir->cd();
}
//_________________________________________________________________________
-Float_t AliTOFtracker::CorrectTimeWalk( Float_t dist, Float_t tof) {
+Float_t AliTOFtracker::CorrectTimeWalk( Float_t dist, Float_t tof) const {
//dummy, for the moment
Float_t tofcorr=0.;
return tofcorr;
}
//_________________________________________________________________________
-Float_t AliTOFtracker::GetTimeZerofromT0(AliESDEvent *event) const {
-
- //Returns TimeZero as measured by T0 detector
-
- return event->GetT0();
-}
-//_________________________________________________________________________
-Float_t AliTOFtracker::GetTimeZerofromTOF(AliESDEvent * /*event*/) const {
-
- //dummy, for the moment. T0 algorithm using tracks on TOF
- {
- //place T0 algo here...
- }
- return 0.;
-}
-//_________________________________________________________________________
void AliTOFtracker::FillClusterArray(TObjArray* arr) const
{