]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/JetTasks/AliAnalysisTaskJetServices.h
adding forward declaration
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalysisTaskJetServices.h
1 #ifndef ALIANALYSISTASKJETSERVICES_H
2 #define ALIANALYSISTASKJETSERVICES_H
3  
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 // **************************************
8 // Task used for the correction of determiantion of reconstructed jet spectra
9 // Compares input (gen) and output (rec) jets   
10 // *******************************************
11
12 #include  "AliAnalysisTaskSE.h"
13 #include  "THnSparse.h" // cannot forward declare ThnSparseF
14
15 ////////////////
16 class AliJetHeader;
17 class AliESDEvent;
18 class AliESDVertex;
19 class AliAODEvent;
20 class AliAODVertex;
21 class AliAODJet;
22 class AliGenPythiaEventHeader;
23 class AliCFManager;
24 class AliTriggerAnalysis;
25
26 class TList;
27 class TClonesArray;
28 class TChain;
29 class TH1F;
30 class TH2F;
31 class TH3F;
32 class TProfile;
33 class TRandom3;
34
35
36
37 class AliAnalysisTaskJetServices : public AliAnalysisTaskSE
38 {
39  public:
40     AliAnalysisTaskJetServices();
41     AliAnalysisTaskJetServices(const char* name);
42     virtual ~AliAnalysisTaskJetServices();
43     // Implementation of interface methods
44     virtual void UserCreateOutputObjects();
45     virtual void Init();
46     virtual void LocalInit() { Init(); }
47     virtual void UserExec(Option_t *option);
48     virtual void Terminate(Option_t *option);
49     virtual void SetZVertexCut(Float_t f){fVtxZCut = f;}
50     virtual void SetPtMinCosmic(Float_t ptMin) {fPtMinCosmic = ptMin;}
51     virtual void SetRMinCosmic(Float_t rMin) {fRIsolMinCosmic = rMin;}
52     virtual void SetMaxCosmicAngle(Float_t angle)   {fMaxCosmicAngle = angle;}
53     virtual Bool_t Notify();
54
55     virtual void SetAODInput(Bool_t b){fUseAODInput = b;}
56     virtual void SetRunRange(Float_t fLo,Float_t fUp){fRunRange[0] = fLo;fRunRange[1] = fUp;}
57     virtual void SetMCData(Bool_t b){fMC = b;}
58     virtual void SetUsePhysicsSelection(Bool_t b){fUsePhysicsSelection = b;}
59     virtual void SetPhysicsSelectionFlag(Int_t i){fPhysicsSelectionFlag = i;}
60     virtual void SetFilterAODCollisions(Bool_t b){fFilterAODCollisions = b;}
61
62     virtual void SetNonStdFile(char *c){fNonStdFile = c;}
63     Bool_t IsEventSelected(const AliESDEvent* esd);
64     Bool_t IsEventSelected(const AliAODEvent* aod) const;
65
66     Bool_t IsEventPileUp(const AliESDEvent* esd) const;
67
68     Bool_t IsEventCosmic(const AliESDEvent* esd) const;
69
70     Bool_t IsVertexValid(const AliESDVertex *vtx);
71     Bool_t IsVertexValid(const AliAODVertex *vtx) const;
72
73     Bool_t IsVertexIn(const AliESDVertex *vtx);
74     Bool_t IsVertexIn(const AliAODVertex *vtx) const;
75     Int_t GetEventClass(AliESDEvent *esd);
76     Int_t GetEventClass(AliAODEvent *aod);
77
78
79     virtual void SetFilterMask(UInt_t i){fFilterMask = i;}
80     virtual void SetMinTrackPt(Float_t f){fMinTrackPt = f;}
81     virtual void SetTrackEtaWindow(Float_t f){fTrackRecEtaWindow = f;}
82
83     virtual void SetPhiWeights(TH3F *phiw){fh3PhiWeights = phiw;}
84     virtual void SetFlatteningCoeff(Float_t *fA,Float_t *fB){
85       fFlatA[0] = fA[0];fFlatA[1] = fA[1];
86       fFlatA[0] = fB[0];fFlatB[1] = fB[1];
87     }
88     virtual void SetDeltaQxy(Float_t *fD){
89       fDeltaQxy[0] = fD[0];
90       fDeltaQxy[1] = fD[1];
91     }
92
93     Bool_t   CalculateReactionPlaneAngle(const TList *trackList);
94     Double_t GetPhiWeight(Double_t phi,Double_t signedpt);
95     Int_t   GetListOfTracks(TList *list);
96
97     enum { kAllTriggered = 0,kTriggeredVertex,kTriggeredVertexIn,kSelectedALICE,kSelectedALICEVertexValid,kSelectedALICEVertexIn,kSelected,kConstraints};
98
99     enum { kNoEventCut=1<<0,
100            kPhysicsSelectionCut=1<<1,
101            kContributorsCut1=1<<2,
102            kContributorsCut2=1<<3,
103            kContributorsCut3=1<<4,
104            kVertexTPC=1<<5,
105            kVertexSPD=1<<6,
106            kVertexGlobal=1<<7,
107            kSPDDispersionCut=1<<8,
108            kVertexZCut=1<<9,
109            kVertexRCut=1<<10,
110            kTotalEventCuts=(1<<11)-1};
111
112  private:
113
114     AliAnalysisTaskJetServices(const AliAnalysisTaskJetServices&);
115     AliAnalysisTaskJetServices& operator=(const AliAnalysisTaskJetServices&);
116
117     Bool_t        fUseAODInput;        // take jet from input AOD not from ouptu AOD
118     Bool_t        fUsePhysicsSelection;// decide wether we take into account physicsselction task
119     Bool_t        fMC;                 // true for MC data to allow correct trigger slection
120     Bool_t        fFilterAODCollisions; // filter out collision canditates to the AOD
121     UInt_t        fPhysicsSelectionFlag; // defines the glag for acceptance of events from physics selection
122     UInt_t        fSelectionInfoESD;   // slection info bit mask
123     UInt_t        fEventCutInfoESD;   // event selection info of what is cutted after physics selection
124     UInt_t        fFilterMask;         // filter bit for slecected tracks
125     Int_t         fRPSubeventMethod;   // method for subevent calculation
126     Float_t       fAvgTrials;          // Average number of trials
127     Float_t       fVtxXMean;           // mean x for cuts
128     Float_t       fVtxYMean;           // mean y for cuts
129     Float_t       fVtxZMean;           // mean z for cuts
130     Float_t       fVtxRCut;            // vtx cut in R
131     Float_t       fVtxZCut;            // vtzx cut in Z
132     Float_t       fPtMinCosmic;        // Minimum pT to be considered as cosmic candidate
133     Float_t       fRIsolMinCosmic;     // Minimum R = sqrt{deltaPhi^2 + deltaEta^2} to be considered as cosmic candidate
134     Float_t       fMaxCosmicAngle;     // Max deviation from pi (angle between two tracks) in case of cosmic candidate
135     Float_t       fRunRange[2];        // only important for real data for 
136     Float_t       fCentrality;         // ! centrality
137     Float_t       fTrackRecEtaWindow;     // eta window for rec tracks
138     Float_t       fMinTrackPt;            // limits the track p_T 
139     Float_t       fRPAngle;               // ! RP angle of the reaction plane
140     Float_t       fFlatA[2];              // flattening for RP
141     Float_t       fFlatB[2];              // flattening for RP
142     Float_t       fDeltaQxy[2];           // centering of QX QY
143
144     TRandom3      *fRandomizer;        // ! randomizer
145
146     TString       fNonStdFile;         // outputName for replication
147     TProfile*     fh1Xsec;             //! pythia cross section and trials
148     TH1F*         fh1Trials;           //! trials are added
149     TH1F*         fh1PtHard;           //! Pt har of the event...       
150     TH1F*         fh1PtHardTrials;     //! Number of trials 
151     TH1F*         fh1SelectionInfoESD; //! Masks that satisfy fSelectionInfo
152     TH1F*         fh1EventCutInfoESD;  //! Masks that satisfy fSelectionInfo
153     TH1F*         fh1CentralityESD;    //! centrality 
154     TH1F*         fh1Centrality;       //! centrality 
155     TH1F*         fh1RP;               //! RP distribution
156     TH2F*         fh2TriggerCount;     //! number of fire triggers in each case
157     TH2F*         fh2ESDTriggerCount;  //! number of fire triggers in each case
158     TH2F*         fh2TriggerVtx;       //! vtx. position vs. trigger decision
159     TH2F*         fh2ESDTriggerVtx;    //! vtx. position vs. trigger decision 
160     TH2F*         fh2ESDTriggerRun;    //! fired triggers vs. run number
161     TH2F*         fh2VtxXY;            //! XY position of VTX were available
162     TH1F*         fh1NCosmicsPerEvent;  //! Number of coscmic candidates found in event
163     TH2F*         fh2RPSubevents;   //! subevent RP 
164     TH2F*         fh2RPCentrality;   //! RP vs centrality
165     TH2F*         fh2RPDeltaRP;     //! centrality vs. RP dela  
166     TH2F*         fh2RPQxQy;        //! QX QY moments
167     TH2F*         fh2RPCosDeltaRP;  //! RP resolution
168
169     TH3F*         fh3PhiWeights;  // RP phi weights, need to be set externally
170     TH3F*         fh3RPPhiTracks; //! RP angle
171
172     AliTriggerAnalysis *fTriggerAnalysis; //! Trigger Analysis to get the background rates etc.
173     TList *fHistList; //! Output list
174
175         // Provisions for replication
176     static AliAODHeader*    fgAODHeader;        //! Header for replication
177     static TClonesArray*  fgAODVertices;        //! primary vertex for replication
178     ClassDef(AliAnalysisTaskJetServices,12)
179 };
180  
181 #endif