]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/EMCALJetTasks/AliJetResponseMaker.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliJetResponseMaker.h
index 99aceaa5e3c5b5ab06f609ae3f1fcbf942a1f974..031c77fe642a7795bc2ebafb45ddc7790e098c0c 100644 (file)
@@ -3,11 +3,10 @@
 
 // $Id$
 
-class AliGenPythiaEventHeader;
 class TClonesArray;
-class TH1;
 class TH2;
-class TH3;
+class THnSparse;
+class AliNamedArrayI;
 
 #include "AliEmcalJet.h"
 #include "AliAnalysisTaskEmcalJet.h"
@@ -27,95 +26,123 @@ class AliJetResponseMaker : public AliAnalysisTaskEmcalJet {
 
   void                        UserCreateOutputObjects();
 
-  void                        SetJets2Name(const char *n)                                     { fJets2Name         = n         ; }
-  void                        SetTracks2Name(const char *n)                                   { fTracks2Name       = n         ; }
-  void                        SetClus2Name(const char *n)                                     { fCalo2Name         = n         ; }
-  void                        SetJet2EtaLimits(Float_t min=-999, Float_t max=-999)            { fJet2MinEta = min, fJet2MaxEta = max ; }
-  void                        SetJet2PhiLimits(Float_t min=-999, Float_t max=-999)            { fJet2MinPhi = min, fJet2MaxPhi = max ; }
-  void                        SetRho2Name(const char *n)                                      { fRho2Name          = n         ; }
-  void                        SetPtBiasJet2Clus(Float_t b)                                    { fPtBiasJet2Clus    = b         ; }
-  void                        SetPtBiasJet2Track(Float_t b)                                   { fPtBiasJet2Track   = b         ; }
   void                        SetMatching(MatchingType t, Double_t p1=1, Double_t p2=1)       { fMatching = t; fMatchingPar1 = p1; fMatchingPar2 = p2; }
   void                        SetPtHardBin(Int_t b)                                           { fSelectPtHardBin   = b         ; }
-  void                        SetAreMCCollections(Bool_t f1, Bool_t f2)                       { fAreCollections1MC = f1; fAreCollections2MC = f2; }
+  void                        SetUseCellsToMatch(Bool_t i)                                    { fUseCellsToMatch   = i         ; }
+  void                        SetMinJetMCPt(Float_t pt)                                       { fMinJetMCPt        = pt        ; }
+  void                        SetHistoType(Int_t b)                                           { fHistoType         = b         ; }
+  void                        SetDeltaPtAxis(Int_t b)                                         { fDeltaPtAxis       = b         ; }
+  void                        SetDeltaEtaDeltaPhiAxis(Int_t b)                                { fDeltaEtaDeltaPhiAxis= b       ; }
+  void                        SetNEFAxis(Int_t b)                                             { fNEFAxis           = b         ; }
+  void                        SetZAxis(Int_t b)                                               { fZAxis             = b         ; }
 
  protected:
-  Bool_t                      IsEventSelected();
-  Bool_t                      AcceptJet(AliEmcalJet* jet) const;
-  Bool_t                      AcceptBiasJet2(AliEmcalJet *jet) const;
   void                        ExecOnce();
-  void                        DoJetLoop(Bool_t order);
+  void                        DoJetLoop();
   Bool_t                      FillHistograms();
-  Bool_t                      RetrieveEventObjects();
   Bool_t                      Run();
   Bool_t                      DoJetMatching();
   void                        SetMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, MatchingType matching);
   void                        GetGeometricalMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d) const;
   void                        GetMCLabelMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d1, Double_t &d2) const;
   void                        GetSameCollectionsMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d1, Double_t &d2) const;
+  void                        FillMatchingHistos(Double_t Pt1, Double_t Pt2, Double_t Eta1, Double_t Eta2, Double_t Phi1, Double_t Phi2, 
+                                            Double_t A1, Double_t A2, Double_t d, Double_t CE1, Double_t CE2, Double_t CorrPt1, Double_t CorrPt2, 
+                                            Double_t MCPt1, Double_t NEF1, Double_t NEF2, Double_t LeadingPt1, Double_t LeadingPt2);
+  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);
+  void                        AllocateTH2();
+  void                        AllocateTHnSparse();
+
+  MatchingType                fMatching;                               // matching type
+  Double_t                    fMatchingPar1;                           // matching parameter for jet1-jet2 matching
+  Double_t                    fMatchingPar2;                           // matching parameter for jet2-jet1 matching
+  Bool_t                      fUseCellsToMatch;                        // use cells instead of clusters to match jets (slower but sometimes needed)
+  Double_t                    fMinJetMCPt;                             // minimum jet MC pt
+  Int_t                       fHistoType;                              // histogram type (0=TH2, 1=THnSparse)
+  Int_t                       fDeltaPtAxis;                            // add delta pt axis in THnSparse (default=0)
+  Int_t                       fDeltaEtaDeltaPhiAxis;                   // add delta eta and delta phi axes in THnSparse (default=0)
+  Int_t                       fNEFAxis;                                // add NEF axis in matching THnSparse (default=0)
+  Int_t                       fZAxis;                                  // add Z axis in matching THnSparse (default=0)
+
+  Bool_t                      fIsJet1Rho;                              //!whether the jet1 collection has to be average subtracted
+  Bool_t                      fIsJet2Rho;                              //!whether the jet2 collection has to be average subtracted
+
+  TH2                        *fHistRejectionReason1;                   //!Rejection reason vs. jet pt
+  TH2                        *fHistRejectionReason2;                   //!Rejection reason vs. jet pt
+
+  // THnSparse
+  THnSparse                  *fHistJets1;                              //!jet1 THnSparse
+  THnSparse                  *fHistJets2;                              //!jet2 THnSparse
+  THnSparse                  *fHistMatching;                           //!matching THnSparse
 
-  TString                     fTracks2Name;                   // name of second track collection
-  TString                     fCalo2Name;                     // name of second cluster collection
-  TString                     fJets2Name;                     // name of second jet collection
-  TString                     fRho2Name;                      // name of second jet collection
-  Float_t                     fPtBiasJet2Track;               // select jets 2 with a minimum pt track
-  Float_t                     fPtBiasJet2Clus;                // select jets 2 with a minimum pt cluster
-  Bool_t                      fAreCollections1MC;             // collections 1 MC
-  Bool_t                      fAreCollections2MC;             // collections 1 MC
-  MatchingType                fMatching;                      // matching type
-  Double_t                    fMatchingPar1;                  // matching parameter for generated-reconstructed matching
-  Double_t                    fMatchingPar2;                  // matching parameter for reconstructed-generated matching
-  Float_t                     fJet2MinEta;                    // minimum eta jet 2 acceptance
-  Float_t                     fJet2MaxEta;                    // maximum eta jet 2 acceptance
-  Float_t                     fJet2MinPhi;                    // minimum phi jet 2 acceptance
-  Float_t                     fJet2MaxPhi;                    // maximum phi jet 2 acceptance  
-  Int_t                       fSelectPtHardBin;               // select one pt hard bin for analysis
-
-  AliGenPythiaEventHeader    *fPythiaHeader;                  //!event Pythia header
-  Int_t                       fPtHardBin;                     //!event pt hard bin
-  Int_t                       fNTrials;                       //!event trials
-  TClonesArray               *fTracks2;                       //!Tracks 2
-  TClonesArray               *fCaloClusters2;                 //!Clusters 2
-  TClonesArray               *fJets2;                         //!Jets 2
-  AliRhoParameter            *fRho2;                          //!Event rho 2
-  Double_t                    fRho2Val;                       //!Event rho 2 value 
-  TH1                        *fTracks2Map;                    //!MC particle map
-  // General histograms
-  TH1                        *fHistNTrials;                   //!total number of trials per pt hard bin
-  TH1                        *fHistEvents;                    //!total number of events per pt hard bin
   // Jets 1
-  TH2                        *fHistJets1PhiEta;               //!phi-eta distribution of jets 1
-  TH2                        *fHistJets1PtArea;               //!inclusive jet pt vs area histogram 1
-  TH2                        *fHistJets1CorrPtArea;           //!inclusive jet pt vs. area histogram 1
+  TH2                        *fHistJets1PhiEta;                        //!phi-eta distribution of jets 1
+  TH2                        *fHistJets1PtArea;                        //!inclusive jet pt vs. area histogram 1
+  TH2                        *fHistJets1CorrPtArea;                    //!inclusive jet pt vs. area histogram 1
+  TH2                        *fHistJets1NEFvsPt;                       //!Jet neutral energy fraction vs. jet pt 1
+  TH2                        *fHistJets1CEFvsCEFPt;                    //!Jet charged energy fraction vs. charged jet pt 1
+  TH2                        *fHistJets1ZvsPt;                         //!Constituent Pt over Jet Pt ratio vs. jet pt 1
+
   // Jets 2
-  TH2                        *fHistJets2PhiEta;               //!phi-eta distribution of jets 2
-  TH2                        *fHistJets2PtArea;               //!inclusive jet pt vs. area histogram 2
-  TH2                        *fHistJets2CorrPtArea;           //!inclusive jet pt vs. area histogram 2
-  TH2                        *fHistJets2PhiEtaAcceptance;     //!phi-eta distribution of jets 2 using jet 1 cuts (acceptance, leading hadron bias, ...)
-  TH2                        *fHistJets2PtAreaAcceptance;     //!inclusive jet pt vs. area histogram 2 using jet 1 cuts (acceptance, leading hadron bias, ...)
-  TH2                        *fHistJets2CorrPtAreaAcceptance; //!inclusive jet pt vs. area histogram 2 using jet 1 cuts (acceptance, leading hadron bias, ...)
+  TH2                        *fHistJets2PhiEta;                        //!phi-eta distribution of jets 2
+  TH2                        *fHistJets2PtArea;                        //!inclusive jet pt vs. area histogram 2
+  TH2                        *fHistJets2CorrPtArea;                    //!inclusive jet pt vs. area histogram 2
+  TH2                        *fHistJets2NEFvsPt;                       //!Jet neutral energy fraction vs. jet pt 2
+  TH2                        *fHistJets2CEFvsCEFPt;                    //!Jet charged energy fraction vs. charged jet pt 2
+  TH2                        *fHistJets2ZvsPt;                         //!Constituent Pt over Jet Pt ratio vs. jet pt 2
+
   // Jet1-Jet2 matching
-  TH2                        *fHistMatchingLevelvsJet2Pt;              //!matching level vs jet 2 pt
+  TH2                        *fHistCommonEnergy1vsJet1Pt;              //!common energy 1 (%) vs jet 1 pt
+  TH2                        *fHistCommonEnergy2vsJet2Pt;              //!common energy 2 (%) vs jet 2 pt
+  TH2                        *fHistDistancevsJet1Pt;                   //!distance vs jet 1 pt
+  TH2                        *fHistDistancevsJet2Pt;                   //!distance vs jet 2 pt
   TH2                        *fHistDistancevsCommonEnergy1;            //!distance vs common energy 1 (%)
   TH2                        *fHistDistancevsCommonEnergy2;            //!distance vs common energy 2 (%)
+  TH2                        *fHistCommonEnergy1vsCommonEnergy2;       //!common energy 1 (%) vs common energy 2 (%)
+  TH2                        *fHistDeltaEtaDeltaPhi;                   //!delta eta vs delta phi of matched jets
+
   TH2                        *fHistJet2PtOverJet1PtvsJet2Pt;           //!jet 2 pt over jet 1 pt vs jet 2 pt
-  TH3                        *fHistDeltaEtaPhivsJet2Pt;                //!delta eta-phi between matched jets vs jet 2 pt
+  TH2                        *fHistJet1PtOverJet2PtvsJet1Pt;           //!jet 1 pt over jet 2 pt vs jet 1 pt
+  TH2                        *fHistDeltaPtvsJet1Pt;                    //!delta pt between matched jets vs jet 1 pt
   TH2                        *fHistDeltaPtvsJet2Pt;                    //!delta pt between matched jets vs jet 2 pt
-  TH2                        *fHistDeltaPtvsMatchingLevel;             //!delta pt between matched jets vs matching level
-  TH2                        *fHistDeltaCorrPtvsJet2Pt;                //!delta pt corr between matched jets vs jet 2 pt
-  TH2                        *fHistDeltaCorrPtvsMatchingLevel;         //!delta pt corr between matched jets vs matching level
-  TH2                        *fHistNonMatchedJets1PtArea;              //!non-matched jet 1 pt distribution
-  TH2                        *fHistNonMatchedJets2PtArea;              //!non-matched jet 2 pt distribution
-  TH2                        *fHistNonMatchedJets1CorrPtArea;          //!non-matched jet pt distribution
-  TH2                        *fHistNonMatchedJets2CorrPtArea;          //!non-matched jet pt distribution
+  TH2                        *fHistDeltaPtOverJet1PtvsJet1Pt;          //!delta pt / jet 1 pt between matched jets vs jet 1 pt
+  TH2                        *fHistDeltaPtOverJet2PtvsJet2Pt;          //!delta pt / jet 2 pt between matched jets vs jet 2 pt
+  TH2                        *fHistDeltaPtvsDistance;                  //!delta pt between matched jets vs distance
+  TH2                        *fHistDeltaPtvsCommonEnergy1;             //!delta pt between matched jets vs common energy 1 (%)
+  TH2                        *fHistDeltaPtvsCommonEnergy2;             //!delta pt between matched jets vs common energy 2 (%)
+  TH2                        *fHistDeltaPtvsArea1;                     //!delta pt between matched jets vs jet 1 area
+  TH2                        *fHistDeltaPtvsArea2;                     //!delta pt between matched jets vs jet 2 area
+  TH2                        *fHistDeltaPtvsDeltaArea;                 //!delta pt between matched jets vs delta area
   TH2                        *fHistJet1PtvsJet2Pt;                     //!correlation jet 1 pt vs jet 2 pt
+
+  TH2                        *fHistDeltaCorrPtOverJet1CorrPtvsJet1CorrPt;//!delta pt corr / jet 1 corr pt between matched jets vs jet 1 corr pt
+  TH2                        *fHistDeltaCorrPtOverJet2CorrPtvsJet2CorrPt;//!delta pt corr / jet 2 corr pt between matched jets vs jet 2 corr pt
+  TH2                        *fHistDeltaCorrPtvsJet1CorrPt;            //!delta pt corr between matched jets vs jet 1 corr pt 
+  TH2                        *fHistDeltaCorrPtvsJet2CorrPt;            //!delta pt corr between matched jets vs jet 2 corr pt
+  TH2                        *fHistDeltaCorrPtvsDistance;              //!delta pt corr between matched jets vs distance
+  TH2                        *fHistDeltaCorrPtvsCommonEnergy1;         //!delta pt corr between matched jets vs common energy 1 (%)
+  TH2                        *fHistDeltaCorrPtvsCommonEnergy2;         //!delta pt corr between matched jets vs common energy 2 (%)
+  TH2                        *fHistDeltaCorrPtvsArea1;                 //!delta pt corr between matched jets vs jet 1 area
+  TH2                        *fHistDeltaCorrPtvsArea2;                 //!delta pt corr between matched jets vs jet 2 area
+  TH2                        *fHistDeltaCorrPtvsDeltaArea;             //!delta pt corr between matched jets vs delta area
   TH2                        *fHistJet1CorrPtvsJet2CorrPt;             //!correlation jet 1 corr pt vs jet 2 corr pt
-  TH2                        *fHistMissedJets2PtArea;                  //!jets 2 not found in jet 1 collection
+
+  TH2                        *fHistDeltaMCPtOverJet1MCPtvsJet1MCPt;    //!jet 1 MC pt - jet2 pt / jet 1 MC pt vs jet 1 pt
+  TH2                        *fHistDeltaMCPtOverJet2PtvsJet2Pt;        //!jet 1 MC pt - jet2 pt / jet 2 pt vs jet 2 pt
+  TH2                        *fHistDeltaMCPtvsJet1MCPt;                //!jet 1 MC pt - jet2 pt vs jet 1 MC pt
+  TH2                        *fHistDeltaMCPtvsJet2Pt;                  //!jet 1 MC pt - jet2 pt vs jet 2 pt
+  TH2                        *fHistDeltaMCPtvsDistance;                //!jet 1 MC pt - jet2 pt vs distance
+  TH2                        *fHistDeltaMCPtvsCommonEnergy1;           //!jet 1 MC pt - jet2 pt vs common energy 1 (%)
+  TH2                        *fHistDeltaMCPtvsCommonEnergy2;           //!jet 1 MC pt - jet2 pt vs common energy 2 (%)
+  TH2                        *fHistDeltaMCPtvsArea1;                   //!jet 1 MC pt - jet2 pt vs jet 1 area
+  TH2                        *fHistDeltaMCPtvsArea2;                   //!jet 1 MC pt - jet2 pt vs jet 2 area
+  TH2                        *fHistDeltaMCPtvsDeltaArea;               //!jet 1 MC pt - jet2 pt vs delta area
+  TH2                        *fHistJet1MCPtvsJet2Pt;                   //!correlation jet 1 MC pt vs jet 2 pt
 
  private:
   AliJetResponseMaker(const AliJetResponseMaker&);            // not implemented
   AliJetResponseMaker &operator=(const AliJetResponseMaker&); // not implemented
 
-  ClassDef(AliJetResponseMaker, 11) // Jet response matrix producing task
+  ClassDef(AliJetResponseMaker, 24) // Jet response matrix producing task
 };
 #endif