#include "AliTPCcalibBase.h"
#include "TH1.h"
#include "TH2F.h"
+#include "THnSparse.h"
class AliExternalTrackParam;
class TTree;
class TH2F;
class AliTPCLaserTrack;
+class TCut;
class AliTPCcalibLaser:public AliTPCcalibBase {
public:
AliTPCcalibLaser & operator=(const AliTPCcalibLaser& calibLaser);
virtual ~AliTPCcalibLaser();
virtual void Process(AliESDEvent *event);
+ Int_t GetNtracks(){return fNtracks;}
virtual void Analyze();
virtual Long64_t Merge(TCollection *li);
- virtual void DumpMeanInfo(Float_t bfield, Int_t run=-1, Int_t minEntries=100);
- static void DumpScanInfo(TTree * tree);
+ virtual void DumpMeanInfo(Float_t bfield, Int_t run=-1);
+ static void DumpScanInfo(TTree * tree, const char * cutUser="entries>300&&(gz2<0.15&&gphi2<0.1&&gp42<0.02&&abs(gp41)<0.03)");
static void DumpFitInfo(TTree * chainFit, Int_t id);
static TH1* GetLaserProjection(TH2F* his, Int_t laser){return his->ProjectionY("aaa",laser+1,laser+1);}
//
virtual void DumpLaser(Int_t id);
virtual void RefitLaserJW(Int_t id);
void FitDriftV();
+ Bool_t FitDriftV(Float_t minFraction);
+ //
void MakeDistHisto(Int_t id);
void AddCut(Double_t xcut, Double_t ycut, Double_t ncl){fEdgeXcuts[fNcuts]=xcut; fEdgeYcuts[fNcuts]=ycut; fNClCuts[fNcuts]=ncl; fNcuts++;}
Float_t GetDistance(AliExternalTrackParam *track, AliTPCLaserTrack *ltrp);
void MakeFitHistos();
void MergeFitHistos(AliTPCcalibLaser * add);
-
+ void Process(AliESDtrack *track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);};
+ void Process(AliTPCseed *track){return AliTPCcalibBase::Process(track);}
+ //
+ void SetBeamParameters(TVectorD& meanOffset, TVectorD& meanSlope,
+ TVectorD& sectorArray, Int_t option);
+ void SetFixedDriftVConstant(Double_t aside0, Double_t aside1,
+ Double_t cside0, Double_t cside1)
+ {fUseFixedDriftV = 1; fFixedFitAside0=aside0; fFixedFitAside1=aside1;
+ fFixedFitCside0=cside0; fFixedFitCside1=cside1;}
AliESDEvent * fESD; //! ESD event - not OWNER
AliESDfriend * fESDfriend; //! ESD event - not OWNER
+ Int_t fNtracks; //! counter of associated laser tracks
+ //
TObjArray fTracksMirror; //! tracks with mirror information
TObjArray fTracksEsd; //! tracks with reconstructed information -
// not owner ESD
TObjArray fDeltaZ; //-> array of histograms of delta z for each track
TObjArray fDeltaP3; //-> array of histograms of P3 for each track
TObjArray fDeltaP4; //-> array of histograms of P4 for each track
- TObjArray fDeltaPhi; //-> array of histograms of delta z for each track
- TObjArray fDeltaPhiP; //-> array of histograms of delta z for each track
+ TObjArray fDeltaPhi; //-> array of histograms of delta Phi for each track
+ TObjArray fDeltaPhiP; //-> array of histograms of delta Phi direction for each track
TObjArray fSignals; //->Array of dedx signals
+
//
// Refit residuals histogram
//
+ THnSparseS *fHisLaser; // N dim histogram of laser
TH2F *fHisNclIn; //->Number of clusters inner
TH2F *fHisNclOut; //->Number of clusters outer
TH2F *fHisNclIO; //->Number of cluster inner outer
TObjArray fDeltaZres; //-> array of histograms of delta z residuals for each track
TObjArray fDeltaYres2; //-> array of histograms of delta y residuals for each track
TObjArray fDeltaZres2; //-> array of histograms of delta z residuals for each track
+ TObjArray fDeltaYresAbs; //-> array of histograms of absolute delta y residuals for each track
+ TH1F *fHisYAbsErrors; //-> Number of errors (wrongly assigned tracks) per beam
+ TObjArray fDeltaZresAbs; //-> array of histograms of absolute delta z residuals for each track
+ TH1F *fHisZAbsErrors; //-> Number of errors (wrongly assigned tracks or missing drift velocity) per beam
// TObjArray fDeltaYres3; //-> array of histograms of delta y residuals for each track
//TObjArray fDeltaZres3; //-> array of histograms of delta z residuals for each track
TVectorD fEdgeYcuts; //! cuts in local y direction; used in the refit of the laser tracks
TVectorD fNClCuts; //! cuts on the number of clusters per tracklet; used in the refit of the laser tracks
Int_t fNcuts; //! number of cuts
+ TVectorD fBeamSectorOuter; //! sector map for beams in outer sector
+ TVectorD fBeamSectorInner; //! sector map for beams in inner sector
+ TVectorD fBeamOffsetYOuter; //! absolute y beam offset in outer sector
+ TVectorD fBeamSlopeYOuter; //! absolute y beam slope in outer sector
+ TVectorD fBeamOffsetYInner; //! absolute y beam offset in inner sector
+ TVectorD fBeamSlopeYInner; //! absolute y beam slope in inner sector
+ TVectorD fBeamOffsetZOuter; //! absolute z beam offset in outer sectror
+ TVectorD fBeamSlopeZOuter; //! absolute z beam slope in outer sector
+ TVectorD fBeamOffsetZInner; //! absolute z beam offset in inner sectror
+ TVectorD fBeamSlopeZInner; //! absolute z beam slope in inner sector
+ Bool_t fInverseSlopeZ; //! invert slope in z - mismatch between database and lasers
+ Int_t fUseFixedDriftV; // flag for fixed drift velocity for abs res
+ Double_t fFixedFitAside0; // Fixed drift v constant 0 - A side
+ Double_t fFixedFitAside1; // Fixed drift v constant 1 - A side
+ Double_t fFixedFitCside0; // Fixed drift v constant 0 - C side
+ Double_t fFixedFitCside1; // Fixed drift v constant 1 - C side
//
private:
- ClassDef(AliTPCcalibLaser,3)
+ ClassDef(AliTPCcalibLaser,5)
};