b8fcf380e924e3257c52e51a808abfee6f7c69a7
[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 AliAODTrack;
19 class AliGenPythiaEventHeader;
20 class AliHistogramsUE;
21 class AliMCEvent;
22 class TVector3;
23
24 class AliAnalyseUE : public TObject {
25
26  public: 
27
28   AliAnalyseUE();                                         //constructor
29   AliAnalyseUE(const AliAnalyseUE & g);                   //copy constructor
30   AliAnalyseUE & operator = (const AliAnalyseUE & g);     //assignment operator
31   virtual ~AliAnalyseUE();                                //virtual destructor
32
33   void          AnalyseMC(TVector3 *jetVect, AliMCEvent *mcEvent, AliGenPythiaEventHeader  *pythiaGenHeader, Int_t conePosition, Bool_t useAliStack, Bool_t constrainDistance, Double_t minDistance);
34   Bool_t        AnaTypeSelection(TVector3 *jetVect);
35  
36   void          FillRegions(Bool_t isNorm2Area, TVector3 *jetVect);
37
38   void          FindMaxMinRegions(TVector3 *jetVect, Int_t conePosition);
39   
40   TVector3      GetOrderedClusters(TString aodBranch, Bool_t chargedJets, Double_t chJetPtMin);
41
42   void          Initialize(AliAnalysisTaskUE& tmp);
43
44   Bool_t        VertexSelection(AliAODEvent *value, Int_t tracks, Double_t zed);
45
46   Bool_t        VertexSelectionOld(AliAODEvent *value);
47
48   void          WriteSettings();
49
50   // Various setters when you do not want to initialize members from AliAnalysisTaskUE
51   void          SetAnaTopology(Int_t value)             { fAnaType = value; }
52   void          SetAOD(AliAODEvent *value)              { fkAOD = value; }
53   void          SetConeRadius(Double_t value)           { fConeRadius = value; }
54   void          SetDebug(Int_t value)                   { fDebug = value; }
55   void          SetFilterBit(Int_t value)               { fFilterBit = value; }
56   void          SetJet1EtaCut(Double_t value)           { fJet1EtaCut = value; }
57   void          SetJet2DeltaPhiCut(Double_t value)      { fJet2DeltaPhiCut = value; }
58   void          SetJet2RatioPtCut(Double_t value)       { fJet2RatioPtCut = value; }
59   void          SetJet3PtCut(Double_t value)            { fJet3PtCut = value; }
60   void          SetOrdering(Int_t value)                { fOrdering = value; }
61   void          SetRegionType(Int_t value)              { fRegionType = value; }
62   void          SetSimulateChJetPt(Bool_t value)        { fSimulateChJetPt = value; }
63   void          SetTrackEtaCut(Double_t value)          { fTrackEtaCut = value; }
64   void          SetTrackPtCut(Double_t value)           { fTrackPtCut = value; }
65   void          SetUseChargeHadrons(Bool_t value)       { fUseChargeHadrons = value; }
66   void          SetUseChPartJet(Bool_t value)           { fUseChPartJet = value; }
67   void          SetUsePositiveCharge(Bool_t value)      { fUsePositiveCharge = value; }
68   void          SetUseSingleCharge(Bool_t value)        { fUseSingleCharge = value; }
69
70  private:
71
72   void          FillAvePartPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
73   void          FillMultRegion( Double_t leadingE, Double_t nTrackPtmax, Double_t nTrackPtmin, Double_t ptMin );
74   void          FillSumPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
75   TObjArray*    FindChargedParticleJets( Double_t chJetPtMin);
76   Int_t         IsTrackInsideRegion(TVector3 *jetVect, TVector3 *partVect, Int_t conePosition);
77   void          QSortTracks(TObjArray &a, Int_t first, Int_t last);
78   void          SetRegionArea(TVector3 *jetVect);
79   TObjArray*    SortChargedParticles();     
80   virtual Bool_t   TrackSelected(AliAODTrack* part) const;
81   virtual Bool_t   TrackMCSelected(Double_t charge, Double_t pT, Double_t eta, Int_t pdgCode) const;
82
83   
84     //AliAnalysisTaskUE    fTaskUE;        //  current instance of the analysis-task
85     const AliAODEvent*   fkAOD;             //! AOD Event 
86     Int_t          fDebug;           //  Debug flag
87
88     
89     // For MC
90     Bool_t         fSimulateChJetPt;      // Naive simulation of charged jet Pt from original Jet in MC Header
91     
92     // Cuts UE analysis
93     Int_t          fAnaType;              // Analysis type on jet topology: 
94     Double_t       fAreaReg;              // Area of the region To be used as normalization factor when filling histograms
95     Double_t       fConeRadius;           // if selected Cone-like region type, set Radius (=0.7 default)
96     UInt_t         fFilterBit;            // Select tracks from an specific track cut (default 0xFF all track selected)
97     Int_t          fRegionType;           // 1 = transverse regions (default)
98                                           // 2 = cone regions   
99     Bool_t         fUseChargeHadrons;     // Only use charge hadrons
100     Bool_t         fUseChPartJet;         // Use "Charged Particle Jet" instead of jets from AOD see FindChargedParticleJets()
101
102     Bool_t         fUsePositiveCharge;    //If Single type of charge used then set which one (=kTRUE default positive)
103     Bool_t         fUseSingleCharge;      //Make analysis for a single type of charge (=kFALSE default)
104     
105     Int_t          fOrdering;             //  Pt and multiplicity summation ordering:
106     
107     // Jet cuts 
108     Double_t      fJet1EtaCut;       // |jet1 eta| < fJet1EtaCut   (fAnaType = 1,2,3)
109     Double_t      fJet2DeltaPhiCut;  // |Jet1.Phi - Jet2.Phi| < fJet2DeltaPhiCut (fAnaType = 2,3)
110     Double_t      fJet2RatioPtCut;   // Jet2.Pt/Jet1Pt > fJet2RatioPtCut  (fAnaType = 2,3)
111     Double_t      fJet3PtCut;        // Jet3.Pt < fJet3PtCut  (fAnaType = 3)
112
113     // track cuts
114     Double_t      fTrackEtaCut;      // Eta cut on tracks in the regions (fRegionType=1)
115     Double_t      fTrackPtCut;       // Pt cut of tracks in the regions
116   
117     AliHistogramsUE* fHistos;        // Pointer to histogram class      
118
119     //to fill the different regions
120     Double_t      fSumPtRegionPosit;    // Sum pT in positive region
121     Double_t      fSumPtRegionNegat;    // Sum pT in negative region
122     Double_t      fSumPtRegionForward;  // Sum pT in forward region
123     Double_t      fSumPtRegionBackward; // Sum pT in backward region
124     Double_t      fMaxPartPtRegion;     // Max part pt in region
125     Int_t         fNTrackRegionPosit;   // Tracks in positive region
126     Int_t         fNTrackRegionNegat;   // Tracks in negative region 
127     Int_t         fNTrackRegionForward; // Track in forward region
128     Int_t         fNTrackRegionBackward;// Tracks in backward region
129
130     //Store analysis settings
131     TTree*        fSettingsTree;        // To store analysis settings
132     
133     ClassDef(AliAnalyseUE,0)
134 };
135 #endif