#ifndef ALITRACKCOMPARISON_H #define ALITRACKCOMPARISON_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ //------------------------------------------------------------------- // Base class to test the extrapolation performance from TPC to outer // detectors. Several member functions AddTracks() with different // arguments can be called to execute extrapolation and several // THnSparse are filled with residuls and basic track information // // Anthor: R.Ma, M.Ivanov 02/04/2011 //-------------------------------------------------------------------- #include "TNamed.h" #include "TMatrixDfwd.h" class THnSparse; class TCollection; class AliExternalTrackParam; class AliTrackPointArray; class AliTrackPoint; class TParticle; class AliTrackReference; class TObjArray; class TTreeSRedirector; class AliTrackComparison:public TNamed { public: AliTrackComparison(); AliTrackComparison(const Text_t *name, const Text_t *title); AliTrackComparison(const AliTrackComparison& comp); AliTrackComparison& operator=(const AliTrackComparison& comp); virtual ~AliTrackComparison(); //Make histograms void Init(); //Main process functions Int_t AddTracks(AliExternalTrackParam *param0, AliExternalTrackParam *param1, Double_t mass); Int_t AddTracks(AliTrackReference *ref0, AliTrackReference *ref1, Double_t mass, Int_t charge); Int_t AddTracks(AliExternalTrackParam *param0, AliTrackPoint *point1, Double_t mass, Double_t energy, Double_t *vxyz); AliExternalTrackParam *MakeTrack(const AliTrackReference *ref, Int_t charge); Bool_t PropagateToPoint(AliExternalTrackParam *param0,AliExternalTrackParam *param1, Double_t mass); //Set the step used in extrapolatoin void SetStep(Double_t step){fStep=step;} //Set the range of the first bins of the THnSparse void SetRangeDY(Double_t lowBinDY, Double_t upBinDY) {fLowBinDY=lowBinDY,fUpBinDY=upBinDY;} void SetRangeDZ(Double_t lowBinDZ, Double_t upBinDZ) {fLowBinDZ=lowBinDZ,fUpBinDZ=upBinDZ;} void SetRangeDSnp(Double_t lowBinDSnp, Double_t upBinDSnp){fLowBinDSnp=lowBinDSnp;fUpBinDSnp=upBinDSnp;} void SetRangeDTheta(Double_t lowBinDTheta, Double_t upBinDTheta) {fLowBinDTheta=lowBinDTheta;fUpBinDTheta=upBinDTheta;} void SetRange1Pt(Double_t lowBin1Pt, Double_t upBin1Pt) {fLowBin1Pt=lowBin1Pt;fUpBin1Pt=upBin1Pt;} void SetRange1PtLoss(Double_t lowBin1PtLoss, Double_t upBin1PtLoss) {fLowBin1PtLoss=lowBin1PtLoss;fUpBin1PtLoss=upBin1PtLoss;} //Set number of bins void SetNBins(Int_t nBinsDY, Int_t nBinsDZ, Int_t nBinsDSnp, Int_t nBinsDTheta, Int_t nBins1Pt, Int_t nBins1PtLoss) { fNBinsDY=nBinsDY; fNBinsDZ=nBinsDZ; fNBinsDSnp=nBinsDSnp; fNBinsDTheta=nBinsDTheta; fNBins1Pt=nBins1Pt; fNBins1PtLoss=nBins1PtLoss; } //Set the layer ID of the detectors. Refer to AliGeomManager.h void SetLayerID(Double_t layerID) {fLayerID=layerID;} //Set the flag to fill all the THnSparse's. By default it is kTURE void SetFillAll(Bool_t fillAll) {fFillAll=fillAll;} //Fill the THnSparse void FillHistos(AliExternalTrackParam *param0, AliExternalTrackParam *param1, Double_t tr1Pt); //Getter THnSparse *GetHnSparse(Int_t index) {return fResolHisto[index];} //Used to redirect the output THnSparse into TTreeSRedirector void MakeDistortionMap(Double_t refX, Int_t type); //Set number of bins used to combine statistics void SetNCombineBin(Int_t nCombineBin) {fNCombineBin=nCombineBin;} virtual Long64_t Merge(TCollection *const li); virtual void Add(AliTrackComparison *const comp); void Analyze(); //Not implemented protected: void MakeHistos(); //Initialize all the THnSparse Double_t fStep; //Step used in extrapolation Double_t fLowBinDY; //First bin of residual in Y Double_t fUpBinDY; //Last bin of residual in Y Double_t fLowBinDZ; //First bin of residual in Z Double_t fUpBinDZ; //Last bin of residual in Z Double_t fLowBinDSnp; //First bin of residual in sin(phi) Double_t fUpBinDSnp; //Last bin of residual in sin(phi) Double_t fLowBinDTheta; //First bin of residual in Theta Double_t fUpBinDTheta; //Last bin of residual in Theta Double_t fLowBin1Pt; //First bin of residual in 1/pT Double_t fUpBin1Pt; //Last bin of residual in 1/pT Double_t fLowBin1PtLoss; //First bin of corrected energy loss Double_t fUpBin1PtLoss; //Last bin of corrected energy loss Int_t fNBinsDY; //NBins of residual in Y Int_t fNBinsDZ; //NBins of residual in Z Int_t fNBinsDSnp; //NBins of residual in sin(phi) Int_t fNBinsDTheta; //NBins of residual in Theta Int_t fNBins1Pt; //NBins of residual in 1/pT Int_t fNBins1PtLoss; //NBins of corrected energy loss Double_t fLayerID; //Detector layer ID Bool_t fFillAll; //Flag to fill all the THnSparse Int_t fNCombineBin; //Number of bins used to combine statistics in MakeDistortionMap() THnSparse *fResolHisto[6];//Output THnSparse ClassDef(AliTrackComparison, 4); }; #endif