]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/JetTasks/AliAnalyseUE.h
Fixed coding violations
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalyseUE.h
1 //-*- Mode: C++ -*-
2 #ifndef ALIANALYSEUE_H
3 #define ALIANALYSEUE_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice     */
6
7 ////////////////////////////////////////////////
8 //--------------------------------------------- 
9 // Class  for transverse regions analysis
10 //---------------------------------------------
11 ////////////////////////////////////////////////
12
13 // --- ROOT system ---
14 #include <TObject.h> 
15
16 class AliAnalysisTaskUE;
17 class AliAODEvent;
18 class AliESDEvent;
19 class AliAODTrack;
20 class AliGenPythiaEventHeader;
21 class AliHistogramsUE;
22 class AliInputEventHandler;
23 class AliMCEvent;
24 class AliStack;
25 class TVector3;
26
27 class AliAnalyseUE : public TObject {
28
29  public: 
30
31   AliAnalyseUE();                                         //constructor
32   AliAnalyseUE(const AliAnalyseUE & g);                   //copy constructor
33   AliAnalyseUE & operator = (const AliAnalyseUE & g);     //assignment operator
34   virtual ~AliAnalyseUE();                                //virtual destructor
35
36   void          AnalyseMC(TVector3 *jetVect, AliMCEvent *mcEvent, AliGenPythiaEventHeader  *pythiaGenHeader, Int_t conePosition, Bool_t useAliStack, Bool_t constrainDistance, Double_t minDistance);
37   Bool_t        AnaTypeSelection(TVector3 *jetVect);
38  
39   void          FillRegions(Bool_t isNorm2Area, TVector3 *jetVect);
40
41   void          FindMaxMinRegions(TVector3 *jetVect, Int_t conePosition, Int_t mctrue, Int_t eff);
42   
43   TVector3      GetOrderedClusters(TString aodBranch, Bool_t chargedJets, Double_t chJetPtMin);
44
45   TVector3      GetLeadingTracksMC(AliMCEvent *mcEvent);
46   //leading track label
47   virtual Int_t      GetLtLabel()      const         { return fLtLabel;   }     
48   virtual Int_t      GetLtMCLabel()    const         { return fLtMCLabel; }
49
50   void          Initialize(AliAnalysisTaskUE& tmp);
51   //void          Initialize(AliAnalysisTask& tmp);
52   
53   void          Initialize(Int_t anaType, AliAODEvent* aod,Double_t coneRadius, Int_t debug, Int_t filterBit, Double_t jet1EtaCut, Double_t jet2DeltaPhiCut, Double_t jet2RatioPtCut, Double_t jet3PtCut, Int_t ordering, Int_t regionType,Bool_t simulateChJetPt, Double_t trackEtaCut, Double_t trackPtCut, Bool_t useChargeHadrons, Bool_t useChPartJet, Bool_t usePositiveCharge, Bool_t useSingleCharge, AliHistogramsUE* histos);
54
55   Bool_t        TriggerSelection(AliInputEventHandler* input);
56
57   Bool_t        VertexSelection(AliAODEvent *value, Int_t tracks, Double_t zed);
58
59   Bool_t        VertexSelectionOld(AliAODEvent *value);
60
61   void          WriteSettings();
62
63   // Various setters when you do not want to initialize members from AliAnalysisTaskUE
64   void          SetAnaTopology(Int_t value)             { fAnaType = value; }
65   void          SetAOD(AliAODEvent *value)              { fkAOD = value; }
66   void          SetConeRadius(Double_t value)           { fConeRadius = value; }
67   void          SetDebug(Int_t value)                   { fDebug = value; }
68   void          SetESDEvent(AliESDEvent *value)         { fkESD = value;  }
69   void          SetFilterBit(Int_t value)               { fFilterBit = value; }
70   void          SetJet1EtaCut(Double_t value)           { fJet1EtaCut = value; }
71   void          SetJet2DeltaPhiCut(Double_t value)      { fJet2DeltaPhiCut = value; }
72   void          SetJet2RatioPtCut(Double_t value)       { fJet2RatioPtCut = value; }
73   void          SetJet3PtCut(Double_t value)            { fJet3PtCut = value; }
74   void          SetOrdering(Int_t value)                { fOrdering = value; }
75   void          SetRegionType(Int_t value)              { fRegionType = value; }
76   void          SetSimulateChJetPt(Bool_t value)        { fSimulateChJetPt = value; }
77   void          SetTrackEtaCut(Double_t value)          { fTrackEtaCut = value; }
78   void          SetTrackPtCut(Double_t value)           { fTrackPtCut = value; }
79   void          SetUseChargeHadrons(Bool_t value)       { fUseChargeHadrons = value; }
80   void          SetUseChPartJet(Bool_t value)           { fUseChPartJet = value; }
81   void          SetUsePositiveCharge(Bool_t value)      { fUsePositiveCharge = value; }
82   void          SetUseSingleCharge(Bool_t value)        { fUseSingleCharge = value; }
83   
84   void          SetStack(AliStack* value)               { fStack = value; }
85  private:
86
87   void          FillAvePartPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
88   void          FillMultRegion( Double_t leadingE, Double_t nTrackPtmax, Double_t nTrackPtmin, Double_t ptMin );
89   void          FillSumPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
90   TObjArray*    FindChargedParticleJets( Double_t chJetPtMin);
91   Int_t         IsTrackInsideRegion(TVector3 *jetVect, TVector3 *partVect, Int_t conePosition);
92   void          QSortTracks(TObjArray &a, Int_t first, Int_t last);
93   void          QSortTracksMC(TObjArray &a, Int_t first, Int_t last);
94   void          SetRegionArea(TVector3 *jetVect);
95   TObjArray*    SortChargedParticles();     
96   TObjArray*    SortChargedParticlesMC();     
97   virtual Bool_t TrackSelected(AliAODTrack* part) const;
98   virtual Bool_t TrackSelectedEfficiency(AliAODTrack* part) const;
99   virtual Bool_t TrackMCSelected(Double_t charge, Double_t pT, Double_t eta, Int_t pdgCode) const;
100
101   
102     //AliAnalysisTaskUE    fTaskUE;        //  current instance of the analysis-task
103     const AliAODEvent*   fkAOD;             //! AOD Event 
104     AliMCEvent*    fkMC;              //! MC  Event
105     AliESDEvent*   fkESD;             //! ESD Event (only needed to get track DCA) 
106     Int_t          fDebug;            //  Debug flag
107
108     
109     // For MC
110     Bool_t         fSimulateChJetPt;      // Naive simulation of charged jet Pt from original Jet in MC Header
111     AliStack*      fStack;                // Instance of MC Particle Stack
112
113     // Cuts UE analysis
114     Int_t          fAnaType;              // Analysis type on jet topology: 
115     Double_t       fAreaReg;              // Area of the region To be used as normalization factor when filling histograms
116     Double_t       fConeRadius;           // if selected Cone-like region type, set Radius (=0.7 default)
117     UInt_t         fFilterBit;            // Select tracks from an specific track cut (default 0xFF all track selected)
118     Int_t          fRegionType;           // 1 = transverse regions (default)
119                                           // 2 = cone regions   
120     Bool_t         fUseChargeHadrons;     // Only use charge hadrons
121     Bool_t         fUseChPartJet;         // Use "Charged Particle Jet" instead of jets from AOD see FindChargedParticleJets()
122
123     Bool_t         fUsePositiveCharge;    //If Single type of charge used then set which one (=kTRUE default positive)
124     Bool_t         fUseSingleCharge;      //Make analysis for a single type of charge (=kFALSE default)
125     
126     Int_t          fOrdering;             //  Pt and multiplicity summation ordering:
127     
128     // Jet cuts 
129     Double_t      fJet1EtaCut;       // |jet1 eta| < fJet1EtaCut   (fAnaType = 1,2,3)
130     Double_t      fJet2DeltaPhiCut;  // |Jet1.Phi - Jet2.Phi| < fJet2DeltaPhiCut (fAnaType = 2,3)
131     Double_t      fJet2RatioPtCut;   // Jet2.Pt/Jet1Pt > fJet2RatioPtCut  (fAnaType = 2,3)
132     Double_t      fJet3PtCut;        // Jet3.Pt < fJet3PtCut  (fAnaType = 3)
133
134     // track cuts
135     Double_t      fTrackEtaCut;      // Eta cut on tracks in the regions (fRegionType=1)
136     Double_t      fTrackPtCut;       // Pt cut of tracks in the regions
137     AliHistogramsUE* fHistos;        // Pointer to histogram class      
138
139     //to fill the different regions
140     Double_t      fSumPtRegionPosit;    // Sum pT in positive region
141     Double_t      fSumPtRegionNegat;    // Sum pT in negative region
142     Double_t      fSumPtRegionForward;  // Sum pT in forward region
143     Double_t      fSumPtRegionBackward; // Sum pT in backward region
144     Double_t      fMaxPartPtRegion;     // Max part pt in region
145     Int_t         fNTrackRegionPosit;   // Tracks in positive region
146     Int_t         fNTrackRegionNegat;   // Tracks in negative region 
147     Int_t         fNTrackRegionForward; // Track in forward region
148     Int_t         fNTrackRegionBackward;// Tracks in backward region
149
150     //Store analysis settings
151     TTree*        fSettingsTree;        // To store analysis settings
152     
153     //Leading track labels             
154     Int_t         fLtLabel;              // Label of reconstructed leading track
155     Int_t         fLtMCLabel;            // Label of true leading track
156     
157     
158     ClassDef(AliAnalyseUE,0)
159 };
160 #endif