]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/AliJetResponseMaker.h
from salvatore
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliJetResponseMaker.h
1 #ifndef ALIJETRESPONSEMAKER_H
2 #define ALIJETRESPONSEMAKER_H
3
4 // $Id$
5
6 class AliGenPythiaEventHeader;
7 class TClonesArray;
8 class TH1;
9 class TH2;
10 class TProfile;
11 class AliNamedArrayI;
12
13 #include "AliEmcalJet.h"
14 #include "AliAnalysisTaskEmcalJet.h"
15
16 class AliJetResponseMaker : public AliAnalysisTaskEmcalJet {
17  public:
18   AliJetResponseMaker();
19   AliJetResponseMaker(const char *name);
20   virtual ~AliJetResponseMaker();
21
22   enum MatchingType{
23     kNoMatching = 0,
24     kGeometrical = 1,
25     kMCLabel = 2,
26     kSameCollections = 3
27   };
28
29   void                        UserCreateOutputObjects();
30   Bool_t                      UserNotify();
31
32   void                        SetJets2Name(const char *n)                                     { fJets2Name         = n         ; }
33   void                        SetTracks2Name(const char *n)                                   { fTracks2Name       = n         ; }
34   void                        SetClus2Name(const char *n)                                     { fCalo2Name         = n         ; }
35   void                        SetJet2EtaLimits(Float_t min=-999, Float_t max=-999)            { fJet2MinEta = min, fJet2MaxEta = max ; }
36   void                        SetJet2PhiLimits(Float_t min=-999, Float_t max=-999)            { fJet2MinPhi = min, fJet2MaxPhi = max ; }
37   void                        SetJet2Radius(Float_t r)                                        { fJet2Radius        = r         ; }
38   void                        SetJet2AreaCut(Float_t cut)                                     { fJet2AreaCut       = cut       ; }
39   void                        SetRho2Name(const char *n)                                      { fRho2Name          = n         ; }
40   void                        SetPtBiasJet2Clus(Float_t b)                                    { fPtBiasJet2Clus    = b         ; }
41   void                        SetPtBiasJet2Track(Float_t b)                                   { fPtBiasJet2Track   = b         ; }
42   void                        SetMatching(MatchingType t, Double_t p1=1, Double_t p2=1)       { fMatching = t; fMatchingPar1 = p1; fMatchingPar2 = p2; }
43   void                        SetPtHardBin(Int_t b)                                           { fSelectPtHardBin   = b         ; }
44   void                        SetAreMCCollections(Bool_t f1, Bool_t f2)                       { fAreCollections1MC = f1; fAreCollections2MC = f2; }
45   void                        SetIsEmbedded(Bool_t i)                                         { fIsEmbedded        = i         ; }
46   void                        SetIsPythia(Bool_t i)                                           { fIsPythia          = i         ; }
47   void                        SetMCLabelShift(Int_t s)                                        { fMCLabelShift      = s         ; }
48   void                        SetUseCellsToMatch(Bool_t i)                                    { fUseCellsToMatch   = i         ; }
49   void                        SetMinJetMCPt(Float_t pt)                                       { fMinJetMCPt        = pt        ; }
50
51  protected:
52   Bool_t                      PythiaInfoFromFile(const char* currFile, Float_t &fXsec, Float_t &fTrials, Int_t &pthard);
53   Bool_t                      IsEventSelected();
54   Bool_t                      AcceptJet(AliEmcalJet* jet) const;
55   Bool_t                      AcceptBiasJet2(AliEmcalJet *jet) const;
56   void                        ExecOnce();
57   void                        DoJetLoop(Bool_t order);
58   Bool_t                      FillHistograms();
59   Bool_t                      RetrieveEventObjects();
60   Bool_t                      Run();
61   Bool_t                      DoJetMatching();
62   void                        SetMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, MatchingType matching);
63   void                        GetGeometricalMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d) const;
64   void                        GetMCLabelMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d1, Double_t &d2) const;
65   void                        GetSameCollectionsMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d1, Double_t &d2) const;
66
67   TString                     fTracks2Name;                   // name of second track collection
68   TString                     fCalo2Name;                     // name of second cluster collection
69   TString                     fJets2Name;                     // name of second jet collection
70   TString                     fRho2Name;                      // name of second jet collection
71   Float_t                     fJet2Radius;                    // jet radius of second jet collection
72   Float_t                     fJet2AreaCut;                   // cut on jet area (second jet collection)
73   Float_t                     fPtBiasJet2Track;               // select jets 2 with a minimum pt track
74   Float_t                     fPtBiasJet2Clus;                // select jets 2 with a minimum pt cluster
75   Bool_t                      fAreCollections1MC;             // collections 1 MC
76   Bool_t                      fAreCollections2MC;             // collections 1 MC
77   MatchingType                fMatching;                      // matching type
78   Double_t                    fMatchingPar1;                  // matching parameter for jet1-jet2 matching
79   Double_t                    fMatchingPar2;                  // matching parameter for jet2-jet1 matching
80   Float_t                     fJet2MinEta;                    // minimum eta jet 2 acceptance
81   Float_t                     fJet2MaxEta;                    // maximum eta jet 2 acceptance
82   Float_t                     fJet2MinPhi;                    // minimum phi jet 2 acceptance
83   Float_t                     fJet2MaxPhi;                    // maximum phi jet 2 acceptance  
84   Int_t                       fSelectPtHardBin;               // select one pt hard bin for analysis
85   Bool_t                      fIsEmbedded;                    // trigger, embedded signal
86   Bool_t                      fIsPythia;                      // trigger, if it is a PYTHIA production
87   Int_t                       fMCLabelShift;                  // if MC label > fMCLabelShift, MC label -= fMCLabelShift
88   Bool_t                      fUseCellsToMatch;               // use cells instead of clusters to match jets (slower but sometimes needed)
89   Double_t                    fMinJetMCPt;                    // minimum jet MC pt
90
91   AliGenPythiaEventHeader    *fPythiaHeader;                  //!event Pythia header
92   Int_t                       fPtHardBin;                     //!event pt hard bin
93   Int_t                       fNTrials;                       //!event trials
94   TClonesArray               *fTracks2;                       //!Tracks 2
95   TClonesArray               *fCaloClusters2;                 //!Clusters 2
96   TClonesArray               *fJets2;                         //!Jets 2
97   AliRhoParameter            *fRho2;                          //!Event rho 2
98   Double_t                    fRho2Val;                       //!Event rho 2 value 
99   AliNamedArrayI             *fTracks2Map;                    //!MC particle map
100   // General histograms
101   TH1                        *fHistTrialsAfterSel;                     //!total number of trials per pt hard bin after selection
102   TH1                        *fHistEventsAfterSel;                     //!total number of events per pt hard bin after selection
103   TH1                        *fHistTrials;                             //!trials from pyxsec.root
104   TProfile                   *fHistXsection;                           //!x section from pyxsec.root
105   TH1                        *fHistEvents;                             //!total number of events per pt hard bin
106   TH2                        *fMCEnergy1vsEnergy2;                     //!total MC energy jet 1 vs total energy jet 2
107   // Jets 1
108   TH2                        *fHistJets1PhiEta;                        //!phi-eta distribution of jets 1
109   TH2                        *fHistJets1PtArea;                        //!inclusive jet pt vs area histogram 1
110   TH2                        *fHistJets1CorrPtArea;                    //!inclusive jet pt vs. area histogram 1
111   TH2                        *fHistLeadingJets1PtArea;                 //!leading jet pt vs area histogram 1
112   TH2                        *fHistLeadingJets1CorrPtArea;             //!leading jet pt vs. area histogram 1
113   TH2                        *fHistJets1NEFvsPt;                       //!Jet neutral energy fraction vs. jet pt 1
114   TH2                        *fHistJets1CEFvsCEFPt;                    //!Jet charged energy fraction vs. charged jet pt 1
115   TH2                        *fHistJets1ZvsPt;                         //!Constituent Pt over Jet Pt ratio vs. jet pt 1
116   // Jets 2
117   TH2                        *fHistJets2PhiEta;                        //!phi-eta distribution of jets 2
118   TH2                        *fHistJets2PtArea;                        //!inclusive jet pt vs. area histogram 2
119   TH2                        *fHistJets2CorrPtArea;                    //!inclusive jet pt vs. area histogram 2
120   TH2                        *fHistLeadingJets2PtArea;                 //!leading jet pt vs. area histogram 2
121   TH2                        *fHistLeadingJets2CorrPtArea;             //!leading jet pt vs. area histogram 2
122   TH2                        *fHistJets2PhiEtaAcceptance;              //!phi-eta distribution of jets 2 using jet 1 cuts (acceptance, leading hadron bias, ...)
123   TH2                        *fHistJets2PtAreaAcceptance;              //!inclusive jet pt vs. area histogram 2 using jet 1 cuts (acceptance, leading hadron bias, ...)
124   TH2                        *fHistJets2CorrPtAreaAcceptance;          //!inclusive jet pt vs. area histogram 2 using jet 1 cuts (acceptance, leading hadron bias, ...)
125   TH2                        *fHistLeadingJets2PtAreaAcceptance;       //!leading jet pt vs. area histogram 2 using jet 1 cuts (acceptance, leading hadron bias, ...)
126   TH2                        *fHistLeadingJets2CorrPtAreaAcceptance;   //!leading jet pt vs. area histogram 2 using jet 1 cuts (acceptance, leading hadron bias, ...)
127   TH2                        *fHistJets2NEFvsPt;                       //!Jet neutral energy fraction vs. jet pt 2
128   TH2                        *fHistJets2CEFvsCEFPt;                    //!Jet charged energy fraction vs. charged jet pt 2
129   TH2                        *fHistJets2ZvsPt;                         //!Constituent Pt over Jet Pt ratio vs. jet pt 2
130   // Jet1-Jet2 matching
131   TH2                        *fHistNonMatchedJets1PtArea;              //!non-matched jet 1 pt distribution
132   TH2                        *fHistNonMatchedJets2PtArea;              //!non-matched jet 2 pt distribution
133   TH2                        *fHistNonMatchedJets1CorrPtArea;          //!non-matched jet pt distribution
134   TH2                        *fHistNonMatchedJets2CorrPtArea;          //!non-matched jet pt distribution
135   TH2                        *fHistMissedJets2PtArea;                  //!jets 2 not found in jet 1 collection
136   TH2                        *fHistCommonEnergy1vsJet1Pt;              //!common energy 1 (%) vs jet 1 pt
137   TH2                        *fHistCommonEnergy2vsJet2Pt;              //!common energy 2 (%) vs jet 2 pt
138   TH2                        *fHistDistancevsJet1Pt;                   //!distance vs jet 1 pt
139   TH2                        *fHistDistancevsJet2Pt;                   //!distance vs jet 2 pt
140   TH2                        *fHistDistancevsCommonEnergy1;            //!distance vs common energy 1 (%)
141   TH2                        *fHistDistancevsCommonEnergy2;            //!distance vs common energy 2 (%)
142   TH2                        *fHistCommonEnergy1vsCommonEnergy2;       //!common energy 1 (%) vs common energy 2 (%)
143   TH2                        *fHistJet2PtOverJet1PtvsJet2Pt;           //!jet 2 pt over jet 1 pt vs jet 2 pt
144   TH2                        *fHistJet1PtOverJet2PtvsJet1Pt;           //!jet 1 pt over jet 2 pt vs jet 1 pt
145   TH2                        *fHistDeltaEtaPhi;                        //!delta eta-phi between matched jets
146   TH2                        *fHistDeltaPtvsJet1Pt;                    //!delta pt between matched jets vs jet 1 pt
147   TH2                        *fHistDeltaPtvsJet2Pt;                    //!delta pt between matched jets vs jet 2 pt
148   TH2                        *fHistDeltaPtvsDistance;                  //!delta pt between matched jets vs distance
149   TH2                        *fHistDeltaPtvsCommonEnergy1;             //!delta pt between matched jets vs common energy 1 (%)
150   TH2                        *fHistDeltaPtvsCommonEnergy2;             //!delta pt between matched jets vs common energy 2 (%)
151   TH2                        *fHistDeltaPtvsArea1;                     //!delta pt between matched jets vs jet 1 area
152   TH2                        *fHistDeltaPtvsArea2;                     //!delta pt between matched jets vs jet 2 area
153   TH2                        *fHistDeltaPtvsDeltaArea;                 //!delta pt between matched jets vs delta area
154   TH2                        *fHistJet1PtvsJet2Pt;                     //!correlation jet 1 pt vs jet 2 pt
155   TH2                        *fHistDeltaCorrPtvsJet1Pt;                //!delta pt corr between matched jets vs jet 1 pt
156   TH2                        *fHistDeltaCorrPtvsJet2Pt;                //!delta pt corr between matched jets vs jet 2 pt
157   TH2                        *fHistDeltaCorrPtvsDistance;              //!delta pt corr between matched jets vs distance
158   TH2                        *fHistDeltaCorrPtvsCommonEnergy1;         //!delta pt corr between matched jets vs common energy 1 (%)
159   TH2                        *fHistDeltaCorrPtvsCommonEnergy2;         //!delta pt corr between matched jets vs common energy 2 (%)
160   TH2                        *fHistDeltaCorrPtvsArea1;                 //!delta pt corr between matched jets vs jet 1 area
161   TH2                        *fHistDeltaCorrPtvsArea2;                 //!delta pt corr between matched jets vs jet 2 area
162   TH2                        *fHistDeltaCorrPtvsDeltaArea;             //!delta pt corr between matched jets vs delta area
163   TH2                        *fHistJet1CorrPtvsJet2CorrPt;             //!correlation jet 1 corr pt vs jet 2 corr pt
164   TH2                        *fHistDeltaMCPtvsJet1Pt;                  //!jet 1 MC pt - jet2 pt vs jet 1 pt
165   TH2                        *fHistDeltaMCPtvsJet2Pt;                  //!jet 1 MC pt - jet2 pt vs jet 2 pt
166   TH2                        *fHistDeltaMCPtvsDistance;                //!jet 1 MC pt - jet2 pt vs distance
167   TH2                        *fHistDeltaMCPtvsCommonEnergy1;           //!jet 1 MC pt - jet2 pt vs common energy 1 (%)
168   TH2                        *fHistDeltaMCPtvsCommonEnergy2;           //!jet 1 MC pt - jet2 pt vs common energy 2 (%)
169   TH2                        *fHistDeltaMCPtvsArea1;                   //!jet 1 MC pt - jet2 pt vs jet 1 area
170   TH2                        *fHistDeltaMCPtvsArea2;                   //!jet 1 MC pt - jet2 pt vs jet 2 area
171   TH2                        *fHistDeltaMCPtvsDeltaArea;               //!jet 1 MC pt - jet2 pt vs delta area
172   TH2                        *fHistJet1MCPtvsJet2Pt;                   //!correlation jet 1 MC pt vs jet 2 pt
173
174  private:
175   AliJetResponseMaker(const AliJetResponseMaker&);            // not implemented
176   AliJetResponseMaker &operator=(const AliJetResponseMaker&); // not implemented
177
178   ClassDef(AliJetResponseMaker, 16) // Jet response matrix producing task
179 };
180 #endif