]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/AliJetResponseMaker.h
Updates from Salvatore for Embedding
[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 TH3;
11
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   };
25
26   void                        UserCreateOutputObjects();
27
28   void                        SetJets2Name(const char *n)                            { fJets2Name         = n         ; }
29   void                        SetTracks2Name(const char *n)                          { fTracks2Name       = n         ; }
30   void                        SetClus2Name(const char *n)                            { fCalo2Name         = n         ; }
31   void                        SetJet2EtaLimits(Float_t min=-999, Float_t max=-999)   { fJet2MinEta = min, fJet2MaxEta = max ; }
32   void                        SetJet2PhiLimits(Float_t min=-999, Float_t max=-999)   { fJet2MinPhi = min, fJet2MaxPhi = max ; }
33   void                        SetRho2Name(const char *n)                             { fRho2Name          = n         ; }
34   void                        SetPtBiasJet2Clus(Float_t b)                           { fPtBiasJet2Clus    = b         ; }
35   void                        SetPtBiasJet2Track(Float_t b)                          { fPtBiasJet2Track   = b         ; }
36   void                        SetMatching(MatchingType t, Double_t p=1)              { fMatching = t; fMatchingPar = p; }
37   void                        SetPtHardBin(Int_t b)                                  { fSelectPtHardBin   = b         ; }
38   void                        SetMCflag1(Bool_t f)                                   { fAreCollections1MC = f         ; }
39   void                        SetMCflag2(Bool_t f)                                   { fAreCollections2MC = f         ; }
40
41  protected:
42   Bool_t                      IsEventSelected();
43   Bool_t                      AcceptJet(AliEmcalJet* jet) const;
44   Bool_t                      AcceptBiasJet2(AliEmcalJet *jet) const;
45   void                        ExecOnce();
46   void                        DoJetLoop(TClonesArray *jets1, TClonesArray *jets2, Bool_t mc);
47   Bool_t                      FillHistograms();
48   Bool_t                      RetrieveEventObjects();
49   Bool_t                      Run();
50   Double_t                    GetMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2) const;
51
52   TString                     fTracks2Name;                   // name of second track collection
53   TString                     fCalo2Name;                     // name of second cluster collection
54   TString                     fJets2Name;                     // name of second jet collection
55   TString                     fRho2Name;                      // name of second jet collection
56   Float_t                     fPtBiasJet2Track;               // select jets 2 with a minimum pt track
57   Float_t                     fPtBiasJet2Clus;                // select jets 2 with a minimum pt cluster
58   Bool_t                      fAreCollections1MC;             // collections 1 MC
59   Bool_t                      fAreCollections2MC;             // collections 1 MC
60   MatchingType                fMatching;                      // matching type
61   Double_t                    fMatchingPar;                   // maximum distance between matched particle and detector level jets
62   Float_t                     fJet2MinEta;                    // minimum eta jet 2 acceptance
63   Float_t                     fJet2MaxEta;                    // maximum eta jet 2 acceptance
64   Float_t                     fJet2MinPhi;                    // minimum phi jet 2 acceptance
65   Float_t                     fJet2MaxPhi;                    // maximum phi jet 2 acceptance  
66   Int_t                       fSelectPtHardBin;               // select one pt hard bin for analysis
67
68   AliGenPythiaEventHeader    *fPythiaHeader;                  //!event Pythia header
69   Int_t                       fPtHardBin;                     //!event pt hard bin
70   Int_t                       fNTrials;                       //!event trials
71   TClonesArray               *fTracks2;                       //!Tracks 2
72   TClonesArray               *fCaloClusters2;                 //!Clusters 2
73   TClonesArray               *fJets2;                       //!Jets 2
74   AliRhoParameter            *fRho2;                          //!Event rho 2
75   Double_t                    fRho2Val;                       //!Event rho 2 value 
76   // General histograms
77   TH1                        *fHistNTrials;                   //!total number of trials per pt hard bin
78   TH1                        *fHistEvents;                    //!total number of events per pt hard bin
79   // Jets 1
80   TH2                        *fHistJets1PhiEta;               //!phi-eta distribution of jets 1
81   TH2                        *fHistJets1PtArea;               //!inclusive jet pt vs area histogram 1
82   TH2                        *fHistJets1CorrPtArea;           //!inclusive jet pt vs. area histogram 1
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   // Jet1-Jet2 matching
88   TH2                        *fHistMatchingLevelvsJet2Pt;              //!matching level vs jet 2 pt
89   TH3                        *fHistClosestDeltaEtaPhivsJet2Pt;         //!delta eta-phi between matched jets vs jet 2 pt
90   TH2                        *fHistClosestDeltaPtvsJet2Pt;             //!delta pt between matched jets vs jet 2 pt
91   TH2                        *fHistClosestDeltaCorrPtvsJet2Pt;         //!delta pt corr between matched jets vs jet 2 pt
92   TH2                        *fHistNonMatchedJets1PtArea;              //!non-matched jet 1 pt distribution
93   TH2                        *fHistNonMatchedJets2PtArea;              //!non-matched jet 2 pt distribution
94   TH2                        *fHistNonMatchedJets1CorrPtArea;          //!non-matched jet pt distribution
95   TH2                        *fHistNonMatchedJets2CorrPtArea;          //!non-matched jet pt distribution
96   TH2                        *fHistJet1PtvsJet2Pt;                     //!correlation jet 1 pt vs jet 2 pt
97   TH2                        *fHistJet1CorrPtvsJet2CorrPt;             //!correlation jet 1 corr pt vs jet 2 corr pt
98   TH2                        *fHistMissedJets2PtArea;                  //!jets 2 not found in jet 1 collection
99
100  private:
101   AliJetResponseMaker(const AliJetResponseMaker&);            // not implemented
102   AliJetResponseMaker &operator=(const AliJetResponseMaker&); // not implemented
103
104   ClassDef(AliJetResponseMaker, 10) // Jet response matrix producing task
105 };
106 #endif