//_____________________________________________________________________________
AliTracker* AliTOFReconstructor::CreateTracker() const
{
-// create a TOF tracker
+
+ //
+ // create a TOF tracker using
+ // TOF Reco Param collected by STEER
+ //
TString selectedTracker = GetOption();
+
+ AliTracker *tracker;
// use MI tracker if selected
- if (selectedTracker.Contains("MI")) return new AliTOFtrackerMI();
- if (selectedTracker.Contains("V1")) return new AliTOFtrackerV1();
- return new AliTOFtracker();
+ if (selectedTracker.Contains("MI")) {
+ tracker = new AliTOFtrackerMI();
+ }
+ // use V1 tracker if selected
+ if (selectedTracker.Contains("V1")) {
+ tracker = new AliTOFtrackerV1();
+ }
+ else {
+ tracker = new AliTOFtracker();
+ }
+ return tracker;
}
///////////////////////////////////////////////////////////////////////////////
#include "AliReconstructor.h"
+#include "AliTOFRecoParam.h"
class TTree;
class AliESDEvent;
class AliRawReader;
-
class AliTOFcalib;
class AliTOFReconstructor: public AliReconstructor {
{FillESD((TTree*)NULL,clustersTree,esd);}
virtual void FillESD(TTree*, TTree*, AliESDEvent*) const {}
+ static const AliTOFRecoParam* GetRecoParam() { return dynamic_cast<const AliTOFRecoParam*>(AliReconstructor::GetRecoParam(3)); } // getting RecoParam obj
+
private:
AliTOFcalib *fTOFcalib; // pointer to TOF calib class
#include "AliTrackPointArray.h"
#include "AliCDBManager.h"
-#include "AliTOFcalib.h"
#include "AliTOFpidESD.h"
#include "AliTOFRecoParam.h"
+#include "AliTOFReconstructor.h"
#include "AliTOFcluster.h"
#include "AliTOFGeometry.h"
#include "AliTOFtracker.h"
// Gettimg the geometry
fGeom= new AliTOFGeometry();
- // Read the reconstruction parameters from the OCDB
- AliTOFcalib* calib=new AliTOFcalib();
- fRecoParam = (AliTOFRecoParam*)calib->ReadRecParFromCDB("TOF/Calib",-1);
- if(fRecoParam->GetApplyPbPbCuts())fRecoParam=fRecoParam->GetPbPbparam();
- Double_t parPID[2];
- parPID[0]=fRecoParam->GetTimeResolution();
- parPID[1]=fRecoParam->GetTimeNSigma();
- fPid=new AliTOFpidESD(parPID);
+
InitCheckHists();
- delete calib;
+
}
//_____________________________________________________________________________
AliTOFtracker::AliTOFtracker(const AliTOFtracker &t):
// Gets seeds from ESD event and Match with TOF Clusters
//
+ // initialize RecoParam for current event
+
+ AliInfo("Initializing params for TOF... ");
+
+ fRecoParam = AliTOFReconstructor::GetRecoParam(); // instantiate reco param from STEER...
+ if (fRecoParam == 0x0) {
+ AliFatal("No Reco Param found for TOF!!!");
+ }
+ //fRecoParam->Dump();
+ if(fRecoParam->GetApplyPbPbCuts())fRecoParam=fRecoParam->GetPbPbparam();
+ Double_t parPID[2];
+ parPID[0]=fRecoParam->GetTimeResolution();
+ parPID[1]=fRecoParam->GetTimeNSigma();
+ fPid=new AliTOFpidESD(parPID);
//Initialise some counters
AliDebug(2, Form("%7i %7i %10i %10i %10i %10i %7i",
iseed,
- fnmatch,
+ fnmatch-1,
TMath::Abs(trackTOFin->GetLabel()),
c->GetLabel(0), c->GetLabel(1), c->GetLabel(2),
idclus)); // AdC
Float_t GetTimeZerofromT0(AliESDEvent* event) const; // T0 from T0
Float_t CorrectTimeWalk(Float_t dist,Float_t tof); // Time Walk correction
- AliTOFRecoParam* fRecoParam; // Pointer to TOF Recon. Pars
- AliTOFGeometry* fGeom; // Pointer to TOF geometry
- AliTOFpidESD* fPid; // Pointer to TOF PID
- AliTOFcluster *fClusters[kMaxCluster]; // pointers to the TOF clusters
+ const AliTOFRecoParam* fRecoParam; // Pointer to TOF Recon. Pars
+ AliTOFGeometry* fGeom; // Pointer to TOF geometry
+ AliTOFpidESD* fPid; // Pointer to TOF PID
+ AliTOFcluster *fClusters[kMaxCluster]; // pointers to the TOF clusters
Int_t fN; // Number of Clusters
Int_t fNseeds; // Number of track seeds
#include "AliESDtrack.h"
#include "AliTOFRecoParam.h"
-#include "AliTOFcalib.h"
+#include "AliTOFReconstructor.h"
#include "AliTOFcluster.h"
#include "AliTOFGeometry.h"
#include "AliTOFtrackerMI.h"
{
//AliTOFtrackerMI main Ctor
- fRecoParam=new AliTOFRecoParam();
- fGeom=new AliTOFGeometry();
- Double_t parPID[2];
- parPID[0]=fRecoParam->GetTimeResolution();
- parPID[1]=fRecoParam->GetTimeNSigma();
- fPid=new AliTOFpidESD(parPID);
fDy=AliTOFGeometry::XPad();
fDz=AliTOFGeometry::ZPad();
fDebugStreamer = new TTreeSRedirector("TOFdebug.root");
// Gets seeds from ESD event and Match with TOF Clusters
//
+ // initialize RecoParam for current event
+
+ AliInfo("Initializing params for TOF... ");
+
+ fRecoParam = AliTOFReconstructor::GetRecoParam(); // instantiate reco param from STEER...
+ if (fRecoParam == 0x0) {
+ AliFatal("No Reco Param found for TOF!!!");
+ }
+ //fRecoParam->Dump();
+ if(fRecoParam->GetApplyPbPbCuts())fRecoParam=fRecoParam->GetPbPbparam();
+ Double_t parPID[2];
+ parPID[0]=fRecoParam->GetTimeResolution();
+ parPID[1]=fRecoParam->GetTimeNSigma();
+ fPid=new AliTOFpidESD(parPID);
//Initialise some counters
Int_t nSteps=(Int_t)(fTOFHeigth/0.1);
- AliTOFcalib *calib = new AliTOFcalib();
+ //AliTOFcalib *calib = new AliTOFcalib(); // AdC
//PH Arrays (moved outside of the loop)
Float_t * trackPos[4];
AliDebug(2, Form("%7i %7i %10i %10i %10i %10i %7i",
i,
- fnmatch,
+ fnmatch-1,
TMath::Abs(trackTOFin->GetLabel()),
tlab[0], tlab[1], tlab[2],
igold)); // AdC
//
for (Int_t ii=0; ii<4; ii++) delete [] trackPos[ii];
delete [] clind;
- delete calib;
+ //delete calib; // AdC
}
//_________________________________________________________________________
void CollectESD(); // Select starting Set for Matching
//void Init();
Float_t GetLinearDistances(AliTOFtrack * track, AliTOFcluster *cluster, Float_t distances[5]);
- AliTOFRecoParam* fRecoParam; // Pointer to TOF Recontr. Params
- AliTOFGeometry* fGeom; // Pointer to TOF geometry
- AliTOFpidESD* fPid; // Pointer to TOF PID
- AliTOFcluster *fClusters[kMaxCluster]; // pointers to the TOF clusters
+
+ const AliTOFRecoParam* fRecoParam; // Pointer to TOF Recon. Pars
+ AliTOFGeometry* fGeom; // Pointer to TOF geometry
+ AliTOFpidESD* fPid; // Pointer to TOF PID
+ AliTOFcluster *fClusters[kMaxCluster]; // pointers to the TOF clusters
Int_t fN; // Number of Clusters
Int_t fNseeds; // Number of track seeds
//--------------------------------------------------------------------//
// //
-// AliTOFtrackerV1 Class //
+// AliTOFtrackerV1 Class //
// Task: Perform association of the ESD tracks to TOF Clusters //
// and Update ESD track with associated TOF Cluster parameters //
// //
#include "AliGeomManager.h"
#include "AliCDBManager.h"
-#include "AliTOFcalib.h"
#include "AliTOFRecoParam.h"
+#include "AliTOFReconstructor.h"
#include "AliTOFcluster.h"
#include "AliTOFGeometry.h"
#include "AliTOFtrackerV1.h"
fHRecSigZVsPWin(0x0)
{
//AliTOFtrackerV1 main Ctor
-
- // Read the reconstruction parameters from the OCDB
- AliTOFcalib *calib = new AliTOFcalib();
- fRecoParam = (AliTOFRecoParam*)calib->ReadRecParFromCDB("TOF/Calib",-1);
- if(fRecoParam->GetApplyPbPbCuts())fRecoParam=fRecoParam->GetPbPbparam();
- Double_t parPID[2];
- parPID[0]=fRecoParam->GetTimeResolution();
- parPID[1]=fRecoParam->GetTimeNSigma();
- fPid=new AliTOFpidESD(parPID);
+
InitCheckHists();
- delete calib;
}
//_____________________________________________________________________________
// Gets seeds from ESD event and Match with TOF Clusters
//
+ // initialize RecoParam for current event
+
+ AliInfo("Initializing params for TOF... ");
+
+ fRecoParam = AliTOFReconstructor::GetRecoParam(); // instantiate reco param from STEER...
+ if (fRecoParam == 0x0) {
+ AliFatal("No Reco Param found for TOF!!!");
+ }
+ //fRecoParam->Dump();
+ if(fRecoParam->GetApplyPbPbCuts())fRecoParam=fRecoParam->GetPbPbparam();
+ Double_t parPID[2];
+ parPID[0]=fRecoParam->GetTimeResolution();
+ parPID[1]=fRecoParam->GetTimeNSigma();
+ fPid=new AliTOFpidESD(parPID);
//Initialise some counters
Double_t cov[15]; trackTOFin->GetExternalCovariance(cov);
Double_t z = par[1];
- Double_t dz = scaleFact*3.*TMath::Sqrt(cov[2]+dZ*dZ/12);
+ Double_t dz = scaleFact*3.*TMath::Sqrt(cov[2]+dZ*dZ/12.);
Double_t dphi = scaleFact*3.*TMath::Sqrt(cov[0]+dY*dY/12.)/sensRadius;
Double_t phi=TMath::ATan2(par[0],x) + trackTOFin->GetAlpha();
fnmatch++;
- AliDebug(2, Form("%7i %7i %10i %10i %10i %10i",
+ AliDebug(2, Form("%7i %7i %10i %10i %10i %10i %7i",
iseed,
- fnmatch,
+ fnmatch-1,
TMath::Abs(trackTOFin->GetLabel()),
bestCluster->GetLabel(0),
bestCluster->GetLabel(1),
- bestCluster->GetLabel(2))); // AdC
+ bestCluster->GetLabel(2),
+ idclus)); // AdC
bestCluster->Use();
if (
//Init histos for Digits/Reco QA and Calibration
+ TDirectory *dir = gDirectory;
+ TFile *logFileTOF = 0;
+
+ TSeqCollection *list = gROOT->GetListOfFiles();
+ int n = list->GetEntries();
+ Bool_t isThere=kFALSE;
+ for(int i=0; i<n; i++) {
+ logFileTOF = (TFile*)list->At(i);
+ if (strstr(logFileTOF->GetName(), "TOFQA.root")){
+ isThere=kTRUE;
+ break;
+ }
+ }
+
+ if(!isThere)logFileTOF = new TFile( "TOFQA.root","RECREATE");
+ logFileTOF->cd();
+
//Digits "QA"
fHDigClusMap = new TH2F("TOFDig_ClusMap", "",182,0.5,182.5,864, 0.5,864.5);
fHDigNClus = new TH1F("TOFDig_NClus", "",200,0.5,200.5);
fHRecSigZVsP=new TH2F("TOFDig_SigZVsP", "",40,0.,4.,100, 0.,5.);
fHRecSigYVsPWin=new TH2F("TOFDig_SigYVsPWin", "",40,0.,4.,100, 0.,50.);
fHRecSigZVsPWin=new TH2F("TOFDig_SigZVsPWin", "",40,0.,4.,100, 0.,50.);
+
+ dir->cd();
+
}
//_________________________________________________________________________
}
}
+ if(!isThere) {
+ AliError(Form("File TOFQA.root not found!! not wring histograms...."));
+ return;
+ }
logFile->cd();
fHDigClusMap->Write(fHDigClusMap->GetName(), TObject::kOverwrite);
fHDigNClus->Write(fHDigNClus->GetName(), TObject::kOverwrite);
fHRecSigZVsPWin->Write(fHRecSigZVsPWin->GetName(), TObject::kOverwrite);
logFile->Flush();
- if(!isThere)logFileTOF = new TFile( "TOFQA.root","RECREATE");
- logFileTOF->cd();
- fHDigClusMap->Write(fHDigClusMap->GetName(), TObject::kOverwrite);
- fHDigNClus->Write(fHDigNClus->GetName(), TObject::kOverwrite);
- fHDigClusTime->Write(fHDigClusTime->GetName(), TObject::kOverwrite);
- fHDigClusToT->Write(fHDigClusToT->GetName(), TObject::kOverwrite);
- fHRecNClus->Write(fHRecNClus->GetName(), TObject::kOverwrite);
- fHRecChi2->Write(fHRecChi2->GetName(), TObject::kOverwrite);
- fHRecDistZ->Write(fHRecDistZ->GetName(), TObject::kOverwrite);
- fHRecSigYVsP->Write(fHRecSigYVsP->GetName(), TObject::kOverwrite);
- fHRecSigZVsP->Write(fHRecSigZVsP->GetName(), TObject::kOverwrite);
- fHRecSigYVsPWin->Write(fHRecSigYVsPWin->GetName(), TObject::kOverwrite);
- fHRecSigZVsPWin->Write(fHRecSigZVsPWin->GetName(), TObject::kOverwrite);
- logFileTOF->Flush();
-
dir->cd();
+
}
//_________________________________________________________________________
Float_t AliTOFtrackerV1::CorrectTimeWalk( Float_t dist, Float_t tof) {
Float_t GetTimeZerofromT0(AliESDEvent* event) const; // T0 from T0
Float_t CorrectTimeWalk(Float_t dist,Float_t tof); // Time Walk correction
- AliTOFRecoParam* fRecoParam; // Pointer to TOF Recon. Pars
- AliTOFpidESD* fPid; // Pointer to TOF PID
- AliTOFcluster *fClusters[kMaxCluster]; // pointers to the TOF clusters
+ const AliTOFRecoParam* fRecoParam; // Pointer to TOF Recon. Pars
+ AliTOFpidESD* fPid; // Pointer to TOF PID
+ AliTOFcluster *fClusters[kMaxCluster]; // pointers to the TOF clusters
Int_t fN; // Number of Clusters
Int_t fNseeds; // Number of track seeds