]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/AliJetResponseMaker.h
Merge remote-tracking branch 'origin/master' into flatdev
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliJetResponseMaker.h
1 #ifndef ALIJETRESPONSEMAKER_H
2 #define ALIJETRESPONSEMAKER_H
3
4 // $Id$
5
6 class TClonesArray;
7 class TH2;
8 class THnSparse;
9 class AliNamedArrayI;
10
11 #include "AliEmcalJet.h"
12 #include "AliAnalysisTaskEmcalJet.h"
13
14 class AliJetResponseMaker : public AliAnalysisTaskEmcalJet {
15  public:
16   AliJetResponseMaker();
17   AliJetResponseMaker(const char *name);
18   virtual ~AliJetResponseMaker();
19
20   enum MatchingType{
21     kNoMatching = 0,
22     kGeometrical = 1,
23     kMCLabel = 2,
24     kSameCollections = 3
25   };
26
27   void                        UserCreateOutputObjects();
28
29   void                        SetMatching(MatchingType t, Double_t p1=1, Double_t p2=1)       { fMatching = t; fMatchingPar1 = p1; fMatchingPar2 = p2; }
30   void                        SetPtHardBin(Int_t b)                                           { fSelectPtHardBin   = b         ; }
31   void                        SetUseCellsToMatch(Bool_t i)                                    { fUseCellsToMatch   = i         ; }
32   void                        SetMinJetMCPt(Float_t pt)                                       { fMinJetMCPt        = pt        ; }
33   void                        SetHistoType(Int_t b)                                           { fHistoType         = b         ; }
34   void                        SetDeltaPtAxis(Int_t b)                                         { fDeltaPtAxis       = b         ; }
35   void                        SetDeltaEtaDeltaPhiAxis(Int_t b)                                { fDeltaEtaDeltaPhiAxis= b       ; }
36   void                        SetNEFAxis(Int_t b)                                             { fNEFAxis           = b         ; }
37   void                        SetZAxis(Int_t b)                                               { fZAxis             = b         ; }
38
39  protected:
40   void                        ExecOnce();
41   void                        DoJetLoop();
42   Bool_t                      FillHistograms();
43   Bool_t                      Run();
44   Bool_t                      DoJetMatching();
45   void                        SetMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, MatchingType matching);
46   void                        GetGeometricalMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d) const;
47   void                        GetMCLabelMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d1, Double_t &d2) const;
48   void                        GetSameCollectionsMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d1, Double_t &d2) const;
49   void                        FillMatchingHistos(Double_t Pt1, Double_t Pt2, Double_t Eta1, Double_t Eta2, Double_t Phi1, Double_t Phi2, 
50                                              Double_t A1, Double_t A2, Double_t d, Double_t CE1, Double_t CE2, Double_t CorrPt1, Double_t CorrPt2, 
51                                              Double_t MCPt1, Double_t NEF1, Double_t NEF2, Double_t LeadingPt1, Double_t LeadingPt2);
52   void                        FillJetHisto(Double_t Phi, Double_t Eta, Double_t Pt, Double_t A, Double_t NEF, Double_t LeadingPt, Double_t CorrPt, Double_t MCPt, Int_t Set);
53   void                        AllocateTH2();
54   void                        AllocateTHnSparse();
55
56   MatchingType                fMatching;                               // matching type
57   Double_t                    fMatchingPar1;                           // matching parameter for jet1-jet2 matching
58   Double_t                    fMatchingPar2;                           // matching parameter for jet2-jet1 matching
59   Bool_t                      fUseCellsToMatch;                        // use cells instead of clusters to match jets (slower but sometimes needed)
60   Double_t                    fMinJetMCPt;                             // minimum jet MC pt
61   Int_t                       fHistoType;                              // histogram type (0=TH2, 1=THnSparse)
62   Int_t                       fDeltaPtAxis;                            // add delta pt axis in THnSparse (default=0)
63   Int_t                       fDeltaEtaDeltaPhiAxis;                   // add delta eta and delta phi axes in THnSparse (default=0)
64   Int_t                       fNEFAxis;                                // add NEF axis in matching THnSparse (default=0)
65   Int_t                       fZAxis;                                  // add Z axis in matching THnSparse (default=0)
66
67   Bool_t                      fIsJet1Rho;                              //!whether the jet1 collection has to be average subtracted
68   Bool_t                      fIsJet2Rho;                              //!whether the jet2 collection has to be average subtracted
69
70   // THnSparse
71   THnSparse                  *fHistJets1;                              //!jet1 THnSparse
72   THnSparse                  *fHistJets2;                              //!jet2 THnSparse
73   THnSparse                  *fHistMatching;                           //!matching THnSparse
74
75   // Jets 1
76   TH2                        *fHistJets1PhiEta;                        //!phi-eta distribution of jets 1
77   TH2                        *fHistJets1PtArea;                        //!inclusive jet pt vs. area histogram 1
78   TH2                        *fHistJets1CorrPtArea;                    //!inclusive jet pt vs. area histogram 1
79   TH2                        *fHistJets1NEFvsPt;                       //!Jet neutral energy fraction vs. jet pt 1
80   TH2                        *fHistJets1CEFvsCEFPt;                    //!Jet charged energy fraction vs. charged jet pt 1
81   TH2                        *fHistJets1ZvsPt;                         //!Constituent Pt over Jet Pt ratio vs. jet pt 1
82
83   // Jets 2
84   TH2                        *fHistJets2PhiEta;                        //!phi-eta distribution of jets 2
85   TH2                        *fHistJets2PtArea;                        //!inclusive jet pt vs. area histogram 2
86   TH2                        *fHistJets2CorrPtArea;                    //!inclusive jet pt vs. area histogram 2
87   TH2                        *fHistJets2NEFvsPt;                       //!Jet neutral energy fraction vs. jet pt 2
88   TH2                        *fHistJets2CEFvsCEFPt;                    //!Jet charged energy fraction vs. charged jet pt 2
89   TH2                        *fHistJets2ZvsPt;                         //!Constituent Pt over Jet Pt ratio vs. jet pt 2
90
91   // Jet1-Jet2 matching
92   TH2                        *fHistCommonEnergy1vsJet1Pt;              //!common energy 1 (%) vs jet 1 pt
93   TH2                        *fHistCommonEnergy2vsJet2Pt;              //!common energy 2 (%) vs jet 2 pt
94   TH2                        *fHistDistancevsJet1Pt;                   //!distance vs jet 1 pt
95   TH2                        *fHistDistancevsJet2Pt;                   //!distance vs jet 2 pt
96   TH2                        *fHistDistancevsCommonEnergy1;            //!distance vs common energy 1 (%)
97   TH2                        *fHistDistancevsCommonEnergy2;            //!distance vs common energy 2 (%)
98   TH2                        *fHistCommonEnergy1vsCommonEnergy2;       //!common energy 1 (%) vs common energy 2 (%)
99   TH2                        *fHistDeltaEtaDeltaPhi;                   //!delta eta vs delta phi of matched jets
100
101   TH2                        *fHistJet2PtOverJet1PtvsJet2Pt;           //!jet 2 pt over jet 1 pt vs jet 2 pt
102   TH2                        *fHistJet1PtOverJet2PtvsJet1Pt;           //!jet 1 pt over jet 2 pt vs jet 1 pt
103   TH2                        *fHistDeltaPtvsJet1Pt;                    //!delta pt between matched jets vs jet 1 pt
104   TH2                        *fHistDeltaPtvsJet2Pt;                    //!delta pt between matched jets vs jet 2 pt
105   TH2                        *fHistDeltaPtOverJet1PtvsJet1Pt;          //!delta pt / jet 1 pt between matched jets vs jet 1 pt
106   TH2                        *fHistDeltaPtOverJet2PtvsJet2Pt;          //!delta pt / jet 2 pt between matched jets vs jet 2 pt
107   TH2                        *fHistDeltaPtvsDistance;                  //!delta pt between matched jets vs distance
108   TH2                        *fHistDeltaPtvsCommonEnergy1;             //!delta pt between matched jets vs common energy 1 (%)
109   TH2                        *fHistDeltaPtvsCommonEnergy2;             //!delta pt between matched jets vs common energy 2 (%)
110   TH2                        *fHistDeltaPtvsArea1;                     //!delta pt between matched jets vs jet 1 area
111   TH2                        *fHistDeltaPtvsArea2;                     //!delta pt between matched jets vs jet 2 area
112   TH2                        *fHistDeltaPtvsDeltaArea;                 //!delta pt between matched jets vs delta area
113   TH2                        *fHistJet1PtvsJet2Pt;                     //!correlation jet 1 pt vs jet 2 pt
114
115   TH2                        *fHistDeltaCorrPtOverJet1CorrPtvsJet1CorrPt;//!delta pt corr / jet 1 corr pt between matched jets vs jet 1 corr pt
116   TH2                        *fHistDeltaCorrPtOverJet2CorrPtvsJet2CorrPt;//!delta pt corr / jet 2 corr pt between matched jets vs jet 2 corr pt
117   TH2                        *fHistDeltaCorrPtvsJet1CorrPt;            //!delta pt corr between matched jets vs jet 1 corr pt 
118   TH2                        *fHistDeltaCorrPtvsJet2CorrPt;            //!delta pt corr between matched jets vs jet 2 corr pt
119   TH2                        *fHistDeltaCorrPtvsDistance;              //!delta pt corr between matched jets vs distance
120   TH2                        *fHistDeltaCorrPtvsCommonEnergy1;         //!delta pt corr between matched jets vs common energy 1 (%)
121   TH2                        *fHistDeltaCorrPtvsCommonEnergy2;         //!delta pt corr between matched jets vs common energy 2 (%)
122   TH2                        *fHistDeltaCorrPtvsArea1;                 //!delta pt corr between matched jets vs jet 1 area
123   TH2                        *fHistDeltaCorrPtvsArea2;                 //!delta pt corr between matched jets vs jet 2 area
124   TH2                        *fHistDeltaCorrPtvsDeltaArea;             //!delta pt corr between matched jets vs delta area
125   TH2                        *fHistJet1CorrPtvsJet2CorrPt;             //!correlation jet 1 corr pt vs jet 2 corr pt
126
127   TH2                        *fHistDeltaMCPtOverJet1MCPtvsJet1MCPt;    //!jet 1 MC pt - jet2 pt / jet 1 MC pt vs jet 1 pt
128   TH2                        *fHistDeltaMCPtOverJet2PtvsJet2Pt;        //!jet 1 MC pt - jet2 pt / jet 2 pt vs jet 2 pt
129   TH2                        *fHistDeltaMCPtvsJet1MCPt;                //!jet 1 MC pt - jet2 pt vs jet 1 MC pt
130   TH2                        *fHistDeltaMCPtvsJet2Pt;                  //!jet 1 MC pt - jet2 pt vs jet 2 pt
131   TH2                        *fHistDeltaMCPtvsDistance;                //!jet 1 MC pt - jet2 pt vs distance
132   TH2                        *fHistDeltaMCPtvsCommonEnergy1;           //!jet 1 MC pt - jet2 pt vs common energy 1 (%)
133   TH2                        *fHistDeltaMCPtvsCommonEnergy2;           //!jet 1 MC pt - jet2 pt vs common energy 2 (%)
134   TH2                        *fHistDeltaMCPtvsArea1;                   //!jet 1 MC pt - jet2 pt vs jet 1 area
135   TH2                        *fHistDeltaMCPtvsArea2;                   //!jet 1 MC pt - jet2 pt vs jet 2 area
136   TH2                        *fHistDeltaMCPtvsDeltaArea;               //!jet 1 MC pt - jet2 pt vs delta area
137   TH2                        *fHistJet1MCPtvsJet2Pt;                   //!correlation jet 1 MC pt vs jet 2 pt
138
139  private:
140   AliJetResponseMaker(const AliJetResponseMaker&);            // not implemented
141   AliJetResponseMaker &operator=(const AliJetResponseMaker&); // not implemented
142
143   ClassDef(AliJetResponseMaker, 24) // Jet response matrix producing task
144 };
145 #endif