-#ifndef ALITRDCHECKESD_H\r
-#define ALITRDCHECKESD_H\r
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
- * See cxx source for full Copyright notice */\r
-\r
-/* $Id: AliTRDcheckESD.h 27496 2008-07-22 08:35:45Z cblume $ */\r
-\r
-/////////////////////////////////////////////////////\r
-//\r
-// Check basic detector results at ESD level\r
-//\r
-// Author\r
-// Alex Bercuci <A.Bercuci@gsi.de>\r
-//\r
-//////////////////////////////////////////////////////\r
-\r
-#ifndef ALIANALYSISTASK_H\r
-#include "AliAnalysisTaskSE.h"\r
-#endif\r
-\r
-class AliESDEvent;\r
-class AliMCEvent;\r
-class AliESDpid;\r
-class AliCFContainer;\r
-class AliAnalysisCuts;\r
-class TH1;\r
-class TH2;\r
-class TH1F;\r
-class TH1D;\r
-class TH2F;\r
-class TH3F;\r
-class TH3;\r
-class TObjArray;\r
-class TGraph;\r
-class TGraphErrors;\r
-class TAxis;\r
-\r
-class AliTRDcheckESD : public AliAnalysisTaskSE {\r
-public:\r
- enum ETRDcheckESDstatus {\r
- kMC = BIT(0) // use MC info\r
- ,kCollision = BIT(1) // \r
- };\r
- enum ETRDcheckESDhistos {\r
- kNCl = 1 // number of clusters per track\r
- ,kTRDstat // TRD tracks status\r
- ,kTRDmom // TRD track momentum\r
- ,kPtRes // Pt resolution @ vertex for TRD\r
- ,kTPCVertex // event vertex from TPC\r
- ,kEventVertex // event vertex\r
- ,kNTracksAll // ntracks - all\r
- ,kNTracksAcc // ntracks - inside acc. and DCA cut\r
- ,kNTracksTPC // additional cut on number of TPC clusters\r
- ,kDCAxy // transverse DCA \r
- ,kDCAz // z - DCA\r
- ,kPt1 // Pt distribution, eta and ptmin cuts\r
- ,kPt2 // Pt distribution, cuts from kPt1 and DCA cuts\r
- ,kPt3pos // Pt distribution, cuts from kPt2 and cut on TPC clusters for positives (>100)\r
- ,kPt3neg // Pt distribution, cuts from kPt2 and cut on TPC clusters for negatives (>100)\r
- ,kPt4pos // Pt distribution, cuts from kPt3pos and at least one TRD tracklet\r
- ,kPt4neg // Pt distribution, cuts from kPt3neg and at least one TRD tracklet\r
- ,kTheta // distribution of theta for tracks passing the cuts from kPt4pos and kPt4neg\r
- ,kPhi // distribution of phi for tracks passing the cuts from kPt4pos and kPt4neg\r
- ,kNTPCCl // number of TPC clusters, cuts from kPt2\r
- ,kNTPCCl2 // number of TPC clusters, cuts from kPt2 + pt>1 GeV/c\r
- ,kTPCDedx // TPC dE/dx, cuts from kPt3pos or kPt3neg\r
- ,kEtaPhi // (eta,phi) distrib. for tracks after the cuts from kPt3pos or kPt3neg\r
- ,kEtaNclsTPC // (TPC_Ncls,eta) distrib. for tracks after the cuts from kPt3pos or kPt3neg\r
- ,kPhiNclsTPC // (TPC_Ncls,phi) distrib. for tracks after the cuts from kPt3pos or kPt3neg\r
- ,kSPDMult // SPD multiplicity\r
- ,kNTrackletsTRD // (TRD tracklets per track, P) distribution, after cuts from kPt4pos or kPt4neg\r
- ,kNClsTrackTRD=kNTrackletsTRD+6 // (TRD clusters per track, P) distribution, after cuts from kPt4pos or kPt4neg\r
- ,kPHSlice=kNClsTrackTRD+6 // (slicePH,sliceNo) distribution, after cuts from kPt4pos or kPt4neg\r
- ,kPHSliceTPCpions=kPHSlice+6 // (slicePH,sliceNo) distribution for TPC pions, after cuts from kPt4pos or kPt4neg \r
- ,kTPCdedxPions=kPHSliceTPCpions+6 // (TPC dedx,P) for selected TPC pions\r
- ,kPHSliceTPCelectrons=kTPCdedxPions+6 // (slicePH,sliceNo) distribution for TPC electrons, after cuts from kPt4pos or kPt4neg\r
- ,kTPCdedxElectrons=kPHSliceTPCelectrons+6 // (TPC dedx,P) for selected TPC electrons\r
- ,kQtotP=kTPCdedxElectrons+6 // (total Q from slices, momentum) distribution, after cuts from kPt4pos or kPt4neg\r
- ,kPropagXYvsP=kQtotP+6 // (X,Y,momentum) distribution after AliESDtrack::PropagateTo(r=300.)\r
- ,kPropagRZvsP // (R,Z,momentum) distribution after AliESDtrack::PropagateTo(r=300.)\r
- ,kTPCRefTracksPos // (eta,detector phi,Pt) distribution of reference TPC positive tracks (fulfill cuts from kPt3pos)\r
- ,kTPCRefTracksNeg=kTPCRefTracksPos+6 // (eta,detector phi,Pt) distribution of reference TPC negative tracks (fulfill cuts from kPt3neg)\r
- ,kTRDRefTracksPos=kTPCRefTracksNeg+6 // (eta,detector phi,Pt) distribution of reference TRD positive tracks (fulfill cuts from kPt4pos)\r
- ,kTRDRefTracksNeg=kTRDRefTracksPos+6 // (eta,detector phi,Pt) distribution of reference TRD negative tracks (fulfill cuts from kPt4neg)\r
- ,kTRDRefTracksPos4=kTRDRefTracksNeg+6 // (eta,detector phi,Pt) distribution of reference TRD positive tracks with 4 tracklets (fulfill cuts from kPt4pos)\r
- ,kTRDRefTracksNeg4=kTRDRefTracksPos4+6 // (eta,detector phi,Pt) distribution of reference TRD negative tracks with 4 tracklets (fulfill cuts from kPt4neg)\r
- ,kTRDRefTracksPos5=kTRDRefTracksNeg4+6\r
- ,kTRDRefTracksNeg5=kTRDRefTracksPos5+6\r
- ,kTRDRefTracksPos6=kTRDRefTracksNeg5+6\r
- ,kTRDRefTracksNeg6=kTRDRefTracksPos6+6\r
- ,kTRDEtaPhiAvNtrkl=kTRDRefTracksNeg6+6 // (eta, detector phi) profile of average number of tracklets\r
- ,kTRDEtaDeltaPhiAvNtrkl=kTRDEtaPhiAvNtrkl+6 // (eta, delta-phi) profile of average number of tracklets\r
- // delta-phi is the angle made by the track with the normal to the chamber entrance plane\r
- ,kTRDEtaPhiAvQtot=kTRDEtaDeltaPhiAvNtrkl+6 // (eta, detector phi) profile of total tracklet charge from slices \r
- ,kTriggerDefs=kTRDEtaPhiAvQtot+36\r
- ,kMatchingPhiEtaCF\r
- ,kMatchingPtCF\r
- ,kBunchCrossingsCF\r
- ,kCentralityCF\r
- ,kQtotCF\r
- ,kPulseHeightCF\r
- ,kExpertCF\r
- ,kNhistos // number of histograms\r
- ,kNrefs = 4 // number of reference plots\r
- };\r
- enum ETrdCfVariables {\r
- kEventVtxZ=0,\r
- kEventMult,\r
- kEventTrigger,\r
- kEventBC,\r
- kTrackTOFBC,\r
- kTrackDCAxy,\r
- kTrackDCAz,\r
- kTrackCharge,\r
- kTrackPhi,\r
- kTrackEta,\r
- kTrackPt,\r
- kTrackP,\r
- kTrackTrdTracklets,\r
- kTrackTrdClusters,\r
- kTrackPHslice,\r
- kTrackQtot=kTrackPHslice+8,\r
- kNTrdCfVariables=kTrackQtot+6,\r
- kNMaxAssignedTriggers = 100\r
- };\r
- enum ETRDcheckESDbits {\r
- kTPCout = 1 // track left TPC\r
- ,kTRDin // track reach TRD fiducial volume\r
- ,kTRDout // track reconstructed in TRD\r
- ,kTRDpid // PID calculated in TRD\r
- ,kTRDref // track refitted in TRD\r
- };\r
- \r
- AliTRDcheckESD();\r
- AliTRDcheckESD(char* name);\r
- virtual ~AliTRDcheckESD();\r
- \r
- void UserCreateOutputObjects();\r
- Bool_t GetRefFigure(Int_t ifig);\r
- Int_t GetNRefFigures() const { return fNRefFigures; } \r
- void UserExec(Option_t *);\r
-\r
- void SetRefTrackFilter(AliAnalysisCuts* const filter) {fReferenceTrackFilter = filter;}\r
- \r
- Bool_t HasMC() const { return TESTBIT(fStatus, kMC);}\r
- Bool_t IsCollision() const {return TESTBIT(fStatus, kCollision);}\r
- void SetCollision(Bool_t set=kTRUE) {set ? SETBIT(fStatus, kCollision) : CLRBIT(fStatus, kCollision);}\r
- TObjArray* Histos();\r
- AliCFContainer* GetMatchingPhiEtaCF() const {return fMatchingPhiEtaCF;}\r
- AliCFContainer* GetMatchingPtCF() const {return fMatchingPtCF;}\r
- AliCFContainer* GetBunchCrossingsCF() const {return fBunchCrossingsCF;}\r
- AliCFContainer* GetCentralityCF() const {return fCentralityCF;}\r
- AliCFContainer* GetQtotCF() const {return fQtotCF;}\r
- AliCFContainer* GetPulseHeightCF() const {return fPulseHeightCF;}\r
- AliCFContainer* GetExpertCF() const {return fExpertCF;}\r
- Int_t GetTriggerCounter(const Char_t* triggerName) const;\r
- void PrintTriggers() const;\r
- Bool_t Load(const Char_t *fn="AnalysisResults.root", const Char_t *dir="TRD_Performance", const Char_t *name=NULL);\r
- void SetMC(Bool_t mc = kTRUE) { mc ? SETBIT(fStatus, kMC) : CLRBIT(fStatus, kMC);}\r
- Bool_t PutTrendValue(const Char_t *name, Double_t val);\r
- void Terminate(Option_t *);\r
- void MakeSummary(Double_t* trendValues=0x0);\r
- void MakeSummaryFromCF(Double_t* trendValues=0x0, const Char_t* triggerName="", Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE);\r
- //virtual Long64_t Merge(TCollection* list);\r
- Int_t GetNAssignedTriggers();\r
- void AddUserTrigger(const Char_t* name) {fUserEnabledTriggers += name; fUserEnabledTriggers += ";";}\r
- \r
- // configure the expert CF container\r
- void AddExpertCFVar(AliTRDcheckESD::ETrdCfVariables var, Int_t nbins, Double_t lowLim, Double_t highLim);\r
- void AddExpertCFVar(AliTRDcheckESD::ETrdCfVariables var, const Char_t* bins);\r
- void EnableExpertCFStep(Int_t step) {if(step>=0 && step<3) fExpertCFEnabledSteps[step] = kTRUE;}\r
- \r
-private:\r
- static const Float_t fgkxTPC; // end radial position of TPC\r
- static const Float_t fgkxTOF; // start radial position of TOF\r
- static const UChar_t fgkNgraph[kNrefs]; // number of graphs/ref plot\r
-\r
- Bool_t PlotTrackingSummary(Int_t centralityClass=1, Double_t* trendValues=0x0); // 1 <= centralityClass <= 5; 0-all centrality classes together\r
- Bool_t PlotPidSummary(Int_t centralityClass=1, Double_t* trendValues=0x0); // 1 <= centralityClass <= 5; 0-all centrality classes together\r
- Bool_t PlotCentSummary(Double_t* trendValues=0x0); // centrality dependent plots\r
-\r
- void PlotTrackingSummaryFromCF(Double_t* trendValues=0x0,\r
- const Char_t* triggerName="",\r
- Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE); // 1 <= centralityClass <= 5; 0-all centrality classes together\r
- void PlotPidSummaryFromCF(Double_t* trendValues=0x0,\r
- const Char_t* triggerName="",\r
- Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE); // 1 <= centralityClass <= 5; 0-all centrality classes together\r
- void PlotCentSummaryFromCF(Double_t* trendValues=0x0, const Char_t* triggerName="",\r
- Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE); // centrality dependent plots\r
- \r
- AliTRDcheckESD(const AliTRDcheckESD&);\r
- AliTRDcheckESD& operator=(const AliTRDcheckESD&);\r
- Int_t Pdg2Idx(Int_t pdg) const;\r
- void Process(TH1 **h, TGraphErrors *g);\r
- void Process2D(TH2 * const h, TGraphErrors **g);\r
- void PrintStatus(ULong_t s);\r
- TH2F* Proj3D(TH3* hist, TH2* accMap, Int_t binLow, Int_t binHigh, Float_t &entries);\r
- TH1D* Proj2D(TH2* hist, TH1* mpvErr=0x0, TH1* widthErr=0x0, TH1* chi2=0x0);\r
- TH1F* EfficiencyTRD(TH3* tpc3D, TH3* trd3D, Bool_t useAcceptance=kTRUE);\r
- TH1F* EfficiencyFromPhiPt(AliCFContainer* cf, Int_t minNtrkl, Int_t maxNtrkl, Int_t stepNom, Int_t stepDenom, const Char_t* varStr="pt", const Char_t* type="TPCTRD");\r
- void DrawTRDGrid();\r
- void SetStyle(TH1* hist, Int_t lineStyle, Int_t lineColor, Int_t lineWidth, \r
- Int_t markerStyle, Int_t markerColor, Int_t markerSize);\r
- void SetStyle(TAxis* axis, const Char_t* title, Float_t titleSize, Float_t titleOffset, Bool_t centerTitle, \r
- Float_t labelSize);\r
- void CheckActiveSM(TH1D* phiProj, Bool_t activeSM[18]);\r
- void FindIsolatedBCs(TH1D* bcHist, Bool_t isIsolated[3500]);\r
- void InitializeCFContainers();\r
- AliCFContainer* CreateCFContainer(const Char_t* name, const Char_t *title);\r
- Int_t GetTriggerIndex(const Char_t* name, Bool_t createNew=kTRUE);\r
- \r
- Int_t fStatus; // bit mask for controlling the task\r
- Int_t fNRefFigures; // number of current ref plots\r
- AliESDEvent *fESD; //! ESD event\r
- AliMCEvent *fMC; //! MC event\r
- AliESDpid *fESDpid; // ESD pid object \r
- TObjArray *fHistos; //! QA histos\r
- TObjArray *fResults; // QA graphs\r
- static FILE *fgFile; //! trend file streamer\r
- \r
- AliCFContainer* fExpertCF; // CF container configured for expert checks\r
- Int_t fExpertCFVars[kNTrdCfVariables];\r
- Bool_t fExpertCFVarsEnabled[kNTrdCfVariables];\r
- Int_t fExpertCFVarNBins[kNTrdCfVariables];\r
- Double_t fExpertCFVarRanges[kNTrdCfVariables][2];\r
- TString fExpertCFVarBins[kNTrdCfVariables];\r
- Bool_t fExpertCFEnabledSteps[3]; // enabled steps 0-TPC; 1-TRD; 2-TOF\r
- \r
- AliCFContainer* fMatchingPhiEtaCF; // Small CF containers tuned for running over central QA \r
- Int_t fMatchingPhiEtaCFVars[kNTrdCfVariables];\r
- AliCFContainer* fMatchingPtCF; // Small CF containers tuned for running over central QA \r
- Int_t fMatchingPtCFVars[kNTrdCfVariables];\r
- AliCFContainer* fBunchCrossingsCF; //\r
- Int_t fBunchCrossingsCFVars[kNTrdCfVariables];\r
- AliCFContainer* fCentralityCF; // Small CF containers tuned for running over central QA \r
- Int_t fCentralityCFVars[kNTrdCfVariables];\r
- AliCFContainer* fQtotCF; //\r
- Int_t fQtotCFVars[kNTrdCfVariables];\r
- AliCFContainer* fPulseHeightCF; //\r
- Int_t fPulseHeightCFVars[kNTrdCfVariables];\r
- \r
- AliAnalysisCuts* fReferenceTrackFilter; // reference track filter\r
- Bool_t fPhysSelTriggersEnabled; // flag wheter physics selection triggers were enabled\r
- TString fUserEnabledTriggers; // list of user enabled triggers\r
- Int_t fNAssignedTriggers; // number of assigned triggers\r
- \r
- // Vertex selection\r
- static const Float_t fgkEvVertexZ;// cm\r
- static const Int_t fgkEvVertexN;// cm\r
- // Track selection\r
- static const Float_t fgkTrkDCAxy; // cm\r
- static const Float_t fgkTrkDCAz; // cm\r
- static const Int_t fgkNclTPC; // N clusters TPC\r
- static const Float_t fgkPt; // min. pt\r
- static const Float_t fgkEta; // eta range\r
- \r
- static const Float_t fgkQs; // scale for the total charge\r
-\r
- ClassDef(AliTRDcheckESD, 9) // user oriented TRD analysis based on ESD-MC data\r
-};\r
-#endif\r
+#ifndef ALITRDCHECKESD_H
+#define ALITRDCHECKESD_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+/* $Id: AliTRDcheckESD.h 27496 2008-07-22 08:35:45Z cblume $ */
+
+/////////////////////////////////////////////////////
+//
+// Check basic detector results at ESD level
+//
+// Author
+// Alex Bercuci <A.Bercuci@gsi.de>
+// Ionut Arsene <iarsene@cern.ch>
+//
+//////////////////////////////////////////////////////
+
+#ifndef ALIANALYSISTASK_H
+#include "AliAnalysisTaskSE.h"
+#endif
+
+class AliESDEvent;
+class AliMCEvent;
+class AliESDpid;
+class AliCFContainer;
+class AliAnalysisCuts;
+class TH1;
+class TH2;
+class TH1F;
+class TH1D;
+class TH2F;
+class TH3F;
+class TH3;
+class TObjArray;
+class TGraph;
+class TGraphErrors;
+class TAxis;
+
+class AliTRDcheckESD : public AliAnalysisTaskSE {
+public:
+ enum ETRDcheckESDstatus {
+ kMC = BIT(0) // use MC info
+ ,kCollision = BIT(1) //
+ };
+
+ enum ETrdCfVariables {
+ kEventVtxZ=0, // event vtx. Z ---
+ kEventMult, // event multiplicity ---
+ kEventTrigger, // trigger class
+ kEventBC, // event BC ---
+ kTrackTOFBC, // track TOF BC ---
+ kTrackDCAxy, // dca xy ---
+ kTrackDCAz, // dca z ---
+ kTrackCharge, // charge ---
+ kTrackOuterParamRadius, // outer param radius
+ kTrackPhi, // phi at the vertex ---
+ kTrackPhiTRD, // phi at the entrance of TRD ---
+ kTrackEta, // eta at the vertex ---
+ kTrackEtaTRD, // eta at the entrance of TRD ---
+ kTrackPt, // pt at the vertex ---
+ kTrackPtTRD, // pt at the entrance of TRD ---
+ kTrackP, // p at the vertex ---
+ kTrackPTRD, // p at the entrance of TRD ---
+ kTrackTrdChi2, // TRD track chi2 ---
+ kTrackTrdTracklets, // number of TRD tracklets ---
+ kTrackTrdClusters, // number of TRD clusters ---
+ kTrackTrdQuality, // TRD quality for TOF
+ kTrackTRDBudget, // TRD material budget
+ kTrackletQtot, // tracklet qtot in each layer
+ kTrackletClustersVsRows, // clusters / crossed rows
+ kTrackletClusters, // number of clusters per tracklet
+ kTrackletP, // tracklet p in each layer
+ kTrackPlossTRDlayer, // p loss at each layer
+ kTrackletLayer, // layer of the current tracklet
+ kTrackletSlice, // tracklet slice number
+ kTrackletPHslice, // charge per tracklet slice
+ kNTrdCfVariables,
+ kNMaxAssignedTriggers = 200
+ };
+
+ enum ETrdCfSteps {
+ kTPCreference=0,
+ kTRD,
+ kTOF,
+ kTOFin,
+ kTOFout,
+ kNSteps
+ };
+
+ AliTRDcheckESD();
+ AliTRDcheckESD(char* name);
+ virtual ~AliTRDcheckESD();
+
+ void UserCreateOutputObjects();
+ void UserExec(Option_t *);
+
+ void SetRefTrackFilter(AliAnalysisCuts* const filter) {fReferenceTrackFilter = filter;}
+
+ Bool_t HasMC() const { return TESTBIT(fStatus, kMC);}
+ Bool_t IsCollision() const {return TESTBIT(fStatus, kCollision);}
+ void SetCollision(Bool_t set=kTRUE) {set ? SETBIT(fStatus, kCollision) : CLRBIT(fStatus, kCollision);}
+ TObjArray* Histos();
+ Int_t GetTriggerCounter(const Char_t* triggerName) const;
+ void PrintTriggers() const;
+ Bool_t Load(const Char_t *fn="AnalysisResults.root", const Char_t *dir="TRD_Performance", const Char_t *name=NULL);
+ void SetMC(Bool_t mc = kTRUE) { mc ? SETBIT(fStatus, kMC) : CLRBIT(fStatus, kMC);}
+ Bool_t PutTrendValue(const Char_t *name, Double_t val);
+ void Terminate(Option_t *);
+ void MakeSummaryFromCF(Double_t* trendValues=0x0, const Char_t* triggerName="", Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE);
+ Int_t GetNAssignedTriggers();
+ void AddUserTrigger(const Char_t* name) {fUserEnabledTriggers += name; fUserEnabledTriggers += ";";}
+
+ void AddCFContainer(const Char_t* name, const Char_t* title, Int_t nSteps, Int_t* steps,
+ Int_t nVars, UInt_t* vars, TArrayD* binLimits);
+
+private:
+ static const Float_t fgkxTPC; // end radial position of TPC
+ static const Float_t fgkxTOF; // start radial position of TOF
+ static const Char_t* fgkVarNames[kNTrdCfVariables];
+ static const Char_t* fgkStepNames[kNSteps];
+
+ void PlotTrackingSummaryFromCF(Double_t* trendValues=0x0,
+ const Char_t* triggerName="",
+ Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE); // 1 <= centralityClass <= 5; 0-all centrality classes together
+ void PlotPidSummaryFromCF(Double_t* trendValues=0x0,
+ const Char_t* triggerName="",
+ Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE); // 1 <= centralityClass <= 5; 0-all centrality classes together
+ void PlotCentSummaryFromCF(Double_t* trendValues=0x0, const Char_t* triggerName="",
+ Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE); // centrality dependent plots
+ void PlotOtherSummaryFromCF(Double_t* trendValues);
+
+ AliTRDcheckESD(const AliTRDcheckESD&);
+ AliTRDcheckESD& operator=(const AliTRDcheckESD&);
+ Int_t Pdg2Idx(Int_t pdg) const;
+ void Process(TH1 **h, TGraphErrors *g);
+ void Process2D(TH2 * const h, TGraphErrors **g);
+ void PrintStatus(ULong_t s);
+ TH2F* Proj3D(TH3* hist, TH2* accMap, Int_t binLow, Int_t binHigh, Float_t &entries);
+ TH1D* Proj2D(TH2* hist, TH1* mpvErr=0x0, TH1* widthErr=0x0, TH1* chi2=0x0);
+ TH1F* EfficiencyTRD(TH3* tpc3D, TH3* trd3D, Bool_t useAcceptance=kTRUE);
+ TH1F* EfficiencyFromPhiPt(AliCFContainer* cf, Int_t minNtrkl, Int_t maxNtrkl, Int_t stepNom, Int_t stepDenom, Int_t var=kTrackPt);
+ void DrawTRDGrid();
+ void SetStyle(TH1* hist, Int_t lineStyle, Int_t lineColor, Int_t lineWidth,
+ Int_t markerStyle, Int_t markerColor, Int_t markerSize);
+ void SetStyle(TAxis* axis, const Char_t* title, Float_t titleSize, Float_t titleOffset, Bool_t centerTitle,
+ Float_t labelSize);
+ void CheckActiveSM(TH1D* phiProj, Bool_t activeSM[18]);
+ void FindIsolatedBCs(TH1D* bcHist, Bool_t isIsolated[3500]);
+ void InitializeCFContainers();
+ Int_t GetTriggerIndex(const Char_t* name, Bool_t createNew=kTRUE);
+ void FillEventInfo(Double_t* values);
+ void FillTrackInfo(Double_t* values, AliESDtrack* esdTrack);
+ void FillTrackletInfo(Double_t* values, AliESDtrack* esdTrack, Int_t iPlane,
+ Double_t* localSagitaPhi, Double_t localMom[][3], Bool_t* localMomGood);
+ void FillTrackletSliceInfo(Double_t* values, AliESDtrack* esdTrack, Int_t iSlice);
+ //void FillCFContainer(AliCFContainer* cf, Double_t* values, Int_t step);
+ void FillCFContainer(AliCFContainer* cf, Double_t* values, Bool_t* stepSelections);
+ Bool_t IsTrackSelected(AliESDtrack* track, Double_t* values, Int_t step);
+ void FillGlobalTrackContainers(Double_t* values, Bool_t* stepSelections, Int_t itrig);
+ void FillTrdTrackletContainers(Double_t* values, Bool_t* stepSelections, Int_t itrig);
+ void FillTrdSliceContainers(Double_t* values, Bool_t* stepSelections, Int_t itrig);
+
+ Int_t fStatus; // bit mask for controlling the task
+ Int_t fNRefFigures; // number of current ref plots
+ AliESDEvent *fESD; //! ESD event
+ AliMCEvent *fMC; //! MC event
+ AliESDpid *fESDpid; // ESD pid object
+ static FILE *fgFile; //! trend file streamer
+ TObjArray* fHistos; //! QA histograms
+
+ AliAnalysisCuts* fReferenceTrackFilter; // reference track filter
+ Bool_t fPhysSelTriggersEnabled; // flag wheter physics selection triggers were enabled
+ TString fUserEnabledTriggers; // list of user enabled triggers
+ Int_t fNAssignedTriggers; // number of assigned triggers
+
+ ClassDef(AliTRDcheckESD, 10) // user oriented TRD analysis based on ESD-MC data
+};
+#endif