Line data Source code
1 : #ifndef AliTPCCALIBALIGNINTERPOLATION_H
2 : #define AliTPCCALIBALIGNINTERPOLATION_H
3 :
4 :
5 : #include <AliTPCcalibBase.h>
6 :
7 : class TTreeSRedirector;
8 : class THn;
9 : class AliExternalTrackParam;
10 : class AliESDfriendTrack;
11 : class AliTrackPointArray;
12 : class TCut;
13 :
14 : class AliTPCcalibAlignInterpolation : public AliTPCcalibBase {
15 : public :
16 : enum {kAlignmentBugFixedBit = BIT(23)};
17 : enum EStreamFlags{ // flags to store addition data/code debugging infomation - needed in case something go wrong
18 : kStreamITSRefit =0x00001, // flag: stream ITS refit
19 : kStreamTRDRefit =0x00002, // flag: stream TRD refit
20 : kStreamTOFRefit =0x00004, // flag: stream TOF refit
21 : kStremInterpolation =0x00008 // flag: stream (heavy) interpolation information at each pad-row
22 : };
23 :
24 : // from the results of running over full chunk (364396 tracks) the fastets is selected
25 : enum {kQ2PT,kSect,kLocX,kZ2X,kDelt,kNDim}; // order of DOFs CP time 13.590
26 :
27 : // enum {kQ2PT,kSect,kLocX,kDelt,kZ2X,kNDim}; // order of DOFs CP time 17.290
28 : // enum {kQ2PT,kSect,kZ2X,kLocX,kDelt,kNDim}; // order of DOFs CP time 13.950
29 : // enum {kQ2PT,kZ2X,kSect,kLocX,kDelt,kNDim}; // order of DOFs CP time 20.520
30 : // enum {kZ2X,kQ2PT,kSect,kLocX,kDelt,kNDim}; // order of DOFs CP time 14.200
31 :
32 : // enum {kSect,kLocX,kQ2PT,kZ2X,kDelt,kNDim}; // order of DOFs CP time 13.670
33 : // enum {kSect,kLocX,kZ2X,kQ2PT,kDelt,kNDim}; // order of DOFs CP time 13.860
34 : // enum {kSect,kLocX,kDelt,kQ2PT,kZ2X,kNDim}; // order of DOFs CP time 16.840
35 : // enum {kSect,kLocX,kDelt,kQ2PT,kZ2X,kNDim}; // order of DOFs CP time 16.840
36 :
37 : public :
38 : using AliTPCcalibBase::Process;
39 : AliTPCcalibAlignInterpolation();
40 : AliTPCcalibAlignInterpolation(const Text_t *name, const Text_t *title, Bool_t onTheFlyFill);
41 : virtual ~AliTPCcalibAlignInterpolation();
42 : void ProcessStandalone(const char * inputList);
43 : virtual void Process(AliESDEvent *event);
44 : virtual void Terminate();
45 0 : void SetStreamLevelTrack(Int_t streamLevelTrack){fStreamLevelTrack=streamLevelTrack;}
46 : Bool_t RefitITStrack(AliESDfriendTrack *friendTrack, Double_t mass, AliExternalTrackParam &trackITS, Double_t &chi2, Double_t &npoints, Int_t* sortInd=0);
47 : Bool_t RefitTOFtrack(AliESDfriendTrack *friendTrack, Double_t mass, AliExternalTrackParam &trackTOF, Double_t &chi2, Double_t &npoints, Int_t* sortInd=0);
48 : Bool_t RefitTRDtrack(AliESDfriendTrack *friendTrack, Double_t mass, AliExternalTrackParam &trackTRD, Double_t &chi2, Double_t &npoints, Int_t* sortInd=0);
49 : Bool_t PropagateInTPCTo(AliExternalTrackParam* t, Double_t xk,Double_t rho,Double_t x0,Double_t mass=0.14);
50 : void CreateResidualHistosInterpolation(Double_t dy=5, Double_t dz=5, Int_t selHis=-1);
51 : void CreateDistortionMapsFromFile(const char * inputFile, const char *outputFile);
52 0 : void SetSyswatchStep(Int_t step){fSyswatchStep=(step==0)?1:step;} // step with which sys. usage is sampled
53 : //
54 : static void MakeEventStatInfo(const char * inputList="cat residual.list", Int_t timeInterval=300, Int_t id=0, Int_t skip=1);
55 : static void FillHistogramsFromChain(const char * residualList, Double_t dy, Double_t dz, Int_t startTime=-1, Int_t stopTime=-1, Int_t maxStat=1000000, Int_t selHist=-1,const char * residualInfoFile="residualInfo.root",Bool_t fixAlignmentBug=kTRUE);
56 : static void FillHistogramsFromStreamers(const char * residualList, Double_t dy, Double_t dz, Int_t downscale);
57 : static Bool_t FitDrift(double deltaT=120., double sigmaT=600., double time0=0., double time1=0.,Bool_t fixAlignmentBug=kTRUE, Bool_t tofBCValidation=kTRUE);
58 : static void MakeNDFit(const char * inputFile, const char * inputTree, Float_t sector0, Float_t sector1, Float_t theta0, Float_t theta1);
59 : static void MakeVDriftOCDB(const char *inputFile, Int_t run, TString targetOCDBstorage="", const char * testDiffCDB=0);
60 : static Float_t CalculateDistance(const TVectorF &track0, const TVectorF &track1, const TVectorF &vecSec, TVectorF &vecDelta, Int_t npValid, Float_t &rmsTrack, Float_t &rmsCluster, Float_t lpNorm=1.5);
61 0 : THn * GetHisITSDRPhi() const {return fHisITSDRPhi;}
62 0 : THn * GetHisITSTRDDRPhi() const {return fHisITSTRDDRPhi;}
63 0 : THn * GetHisITSTOFDRPhi() const {return fHisITSTOFDRPhi;}
64 0 : THn * GetHisITSDZ() const {return fHisITSDZ;}
65 0 : THn * GetHisITSTRDDZ() const {return fHisITSTRDDZ;}
66 0 : THn * GetHisITSTOFDZ() const {return fHisITSTOFDZ;}
67 : // Drawing map methods
68 : static TTree* AddFriendDistortionTree(TTree * tree, const char * fname, const char *treeName, const char *friendAlias);
69 : static TTree* LoadDistortionTrees(const char * maplist="map.list", Int_t cacheSize=100000000, Int_t markerStyle=25, Float_t markerSize=0.4 );
70 : static Bool_t LoadNDLocalFit(TTree * tree, const char *chTree);
71 : static void DrawMapEstimatorComparison(TTree * tree, const char* chtree, Float_t radius, Float_t kZ, TCut & selection, const char *figType=0);
72 : static Bool_t DrawScalingComparison(TTree * tree, const char* chRef, const char *chBin0, const char *chBin1, Float_t R0, Float_t R1, Float_t kZ, const char *figType);
73 : static Float_t InitForAlignmentBugFix(int run, const char* ocdb="raw://");
74 : protected:
75 : static void FixAlignmentBug(int sect, float q2pt, float bz, float& alp, float& x, float &z, float &deltaY, float &deltaZ);
76 : static double GetTgPhi(double x, double y2x, double q2p, double b);
77 : //
78 : static Bool_t SortPointArray(AliTrackPointArray *pointarray, Int_t * sortedIndex);
79 : void ExtractTPCGasData();
80 : Bool_t fOnTheFlyFill; // flag - histogram filled on the fly?
81 : THn * fHisITSDRPhi; // TPC-ITS residual histograms
82 : THn * fHisITSTRDDRPhi; // TPC-ITS+TRD residual histograms
83 : THn * fHisITSTOFDRPhi; // TPC-ITS_TOF residual histograms
84 : THn * fHisITSDZ; // TPC-ITS residual histograms
85 : THn * fHisITSTRDDZ; // TPC-ITS+TRD residual histograms
86 : THn * fHisITSTOFDZ; // TPC-ITS_TOF residual histograms
87 : //
88 : Double_t fRhoTPC; //! TPC gas density
89 : Double_t fX0TPC; //! TPC gas X0;
90 : //
91 : private:
92 : TTreeSRedirector * fStreamer; // calibration streamer
93 : Int_t fStreamLevelTrack; // stream level - In mode 0 only basic information needed for calibration stored (see EStreamFlags )
94 : Int_t fSyswatchStep; // dump system resource information after fSyswatchStep tracks
95 : Int_t fTrackCounter; // processed track counter
96 : AliTPCcalibAlignInterpolation(const AliTPCcalibAlignInterpolation&); // Not implemented
97 : AliTPCcalibAlignInterpolation& operator=(const AliTPCcalibAlignInterpolation&); // Not implemented
98 6 : ClassDef(AliTPCcalibAlignInterpolation,2);
99 : };
100 :
101 :
102 : #endif
|