]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadEPpid.h
- Add THnSparse for correlation of different trigger bits - Change request in SelectC...
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskEmcalJetHadEPpid.h
index 8010c9c7dd8fb5d90506ec39a932589013d93882..9b6699a1819da5e177c242c0951cf2454af10a41 100644 (file)
@@ -14,7 +14,6 @@ class TGraph;
 // AliROOT classes
 class AliEventPoolManager;
 class AliLocalRhoParameter;
-// added 12/9
 class AliEMCALTrack;
 class AliMagF;
 class AliESDEvent;
@@ -22,8 +21,14 @@ class AliAODEvent;
 class AliEMCALGeometry;
 class AliEMCALRecoUtils;
 class AliESDtrack;
+class AliESDtrackCuts;
 
-// this whole section of includes added 
+// container classes
+class AliJetContainer;
+class AliParticleContainer;
+class AliClusterContainer;
+
+// includes
 #include <AliAnalysisTaskEmcalJet.h>
 #include <AliEmcalJet.h>
 #include <AliVEvent.h>
@@ -33,11 +38,13 @@ class AliESDtrack;
 #include <TMath.h>
 #include <TRandom3.h>
 #include <AliLog.h>
+#include "AliESDtrackCuts.h"
 
+// Local Rho includes
 #include "AliAnalysisTaskLocalRho.h"
 #include "AliLocalRhoParameter.h"
 
-// PID stuff
+// PID includes
 #include "AliPIDResponse.h"
 
 #include "AliAnalysisFilter.h"
@@ -50,52 +57,89 @@ class AliAnalysisTaskEmcalJetHadEPpid : public AliAnalysisTaskEmcalJet {
   virtual ~AliAnalysisTaskEmcalJetHadEPpid();
 
   virtual void            UserCreateOutputObjects();
+  // THnSparse Setup
   virtual THnSparse*      NewTHnSparseF(const char* name, UInt_t entries);
   virtual void            GetDimParams(Int_t iEntry,TString &label, Int_t &nbins, Double_t &xmin, Double_t &xmax);
   virtual THnSparse*      NewTHnSparseFPID(const char* name, UInt_t entries);
   virtual void            GetDimParamsPID(Int_t iEntry,TString &label, Int_t &nbins, Double_t &xmin, Double_t &xmax);
+  virtual THnSparse*      NewTHnSparseFCorr(const char* name, UInt_t entries);
+  virtual void            GetDimParamsCorr(Int_t iEntry,TString &label, Int_t &nbins, Double_t &xmin, Double_t &xmax);
+
+  // set a bun of histogram switches up
   void                    SetPlotGlobalRho(Bool_t g)            { doPlotGlobalRho = g; } // plot global rho switch
   void                    SetVariableBinning(Bool_t v)          { doVariableBinning = v; } // do variable binning switch
+  void                       SetvarbinTHnSparse(Bool_t vb)         { dovarbinTHnSparse = vb; } // variable THnSparse bin switch
+  void                                   SetallpidAXIS(Bool_t allAXIS)                 { allpidAXIS = allAXIS; } // fill all PID sparse axis's
+  void                                   SetmakeQAhistos(Bool_t QAhist)        { makeQAhistos = QAhist; } // make QA histos  
+  void                                   SetmakeBIAShistos(Bool_t BIAShist)    { makeBIAShistos = BIAShist; } // make bias histos
+  void                           SetmakeextraCORRhistos(Bool_t Xhist)  { makeextraCORRhistos = Xhist; } // make extra correlations histos
+  void                                   SetoldJEThadhistos(Bool_t oldJH)      { makeoldJEThadhistos = oldJH; } // make older JH histos for comparison
+
+  // set data, detectors type, and PID and PID w bias switches
+  void                                   SetcutType(TString cut)                               { fcutType = cut; }    // EMCAL / TPC acceptance cut
   void                    SetdoPID(Bool_t p)                    { doPID = p; }   // do PID switch
-  void                   SetvarbinTHnSparse(Bool_t vb)         { dovarbinTHnSparse = vb; }
-  void                   SetDataType(Bool_t data)              { useAOD = data; }
+  void                                           SetdoPIDtrackBIAS(Bool_t PIDbias)     { doPIDtrackBIAS = PIDbias; } // do PID track bias switch
+
+  // esd track cuts setters
+  void SetTrackCuts(AliESDtrackCuts *cuts)                      { fesdTrackCuts = cuts; }
+
+  // give comments setter
+  void                                   SetdoComments(Bool_t comm)                    { doComments = comm; } // give comment switch
+
+  // setter switch for flavour jet analysis
+  void                                           SetFlavourJetAnalysis(Bool_t flj)     { doFlavourJetAnalysis = flj; } // set on flavour jet analysis
+  virtual void                   SetJETFlavourTag(Int_t fltag)        { fJetFlavTag = fltag; } // set manual tag #
+
+  // setter for beamtype (needed for UserCreateObjects section)
+  virtual void                   SetCollType(BeamType bm) { fBeam = bm; } // set beamtype 
 
   // getters
-  TString                GetLocalRhoName() const               {return fLocalRhoName; }
+  TString                        GetLocalRhoName() const               {return fLocalRhoName; }
 
   // set names of some objects
-  virtual void            SetLocalRhoName(const char *ln)          {fLocalRhoName = ln; }
-  virtual void            SetTracksName(const char *tn)            {fTracksName = tn; }
-  virtual void            SetJetsName(const char *jn)              {fJetsName = jn; }
+  virtual void            SetLocalRhoName(const char *ln)       { fLocalRhoName = ln; }
+  virtual void            SetTracksName(const char *tn)         { fTracksName = tn; }
+  virtual void                   SetTracksNameME(const char *MEtn)     { fTracksNameME = MEtn; }
+  virtual void            SetJetsName(const char *jn)           { fJetsName = jn; }
 
-  // bias and cuts
+  // bias and cuts - setters
   virtual void            SetAreaCut(Double_t a)                { fAreacut    = a; }
   virtual void            SetTrkBias(Double_t b)                { fTrkBias    = b; }  //require a track with pt > b in jet
   virtual void            SetClusBias(Double_t b)               { fClusBias   = b; }  //require a cluster with pt > b in jet
   virtual void            SetTrkEta(Double_t e)                 { fTrkEta   = e; }  //eta range of the associated tracks
   virtual void            SetJetPtcut(Double_t jpt)             { fJetPtcut = jpt; } // jet pt cut
-  // eta and phi limits of jets
+  virtual void                   SetJetRad(Double_t jrad)                              { fJetRad = jrad; } // jet radius 
+  virtual void                           SetConstituentCut(Double_t constCut)  { fConstituentCut = constCut; } // constituent Cut
+
+  // eta and phi limits of jets - setters
   virtual void            SetJetEta(Double_t emin, Double_t emax)  { fEtamin = emin; fEtamax = emax; }
   virtual void            SetJetPhi(Double_t pmin, Double_t pmax)  { fPhimin = pmin; fPhimax = pmax; }
 
-  // event mixing setters
+  // event mixing setters
   virtual void            SetEventMixing(Int_t yesno)             { fDoEventMixing=yesno; }
   virtual void           SetMixingTracks(Int_t tracks)            { fMixingTracks = tracks; }
 
+  // jet container - setters
+  void SetContainerAllJets(Int_t c)         { fContainerAllJets      = c;}
+  void SetContainerPIDJets(Int_t c)         { fContainerPIDJets      = c;}
+
 protected:
   // functions 
-  void                  ExecOnce();
-  Bool_t                Run();
+  void                                  ExecOnce();
+  Bool_t                        Run();
   virtual void           Terminate(Option_t *); 
+  virtual Int_t          AcceptMyJet(AliEmcalJet *jet);   // applies basic jet tests/cuts before accepting
   virtual Int_t          GetCentBin(Double_t cent) const; // centrality bin of event
-  Float_t                RelativePhi(Double_t mphi,Double_t vphi) const; // relative jet track angle
-  Float_t                RelativeEPJET(Double_t jetAng, Double_t EPAng) const;  // relative jet event plane angle
+  Double_t               RelativePhi(Double_t mphi,Double_t vphi) const; // relative jet track angle
+  Double_t               RelativeEPJET(Double_t jetAng, Double_t EPAng) const;  // relative jet event plane angle
   virtual Int_t          GetEtaBin(Double_t eta) const;      // eta bins
   virtual Int_t          GetpTjetBin(Double_t pt) const;     // jet pt bins
   virtual Int_t          GetpTtrackBin(Double_t pt) const;   // track pt bins
   virtual Int_t          GetzVertexBin(Double_t zVtx) const; // zVertex bin
   void                   SetfHistPIDcounterLabels(TH1* fHistPID) const;  // PID counter
+  void                              SetfHistQAcounterLabels(TH1* h) const; // QA counter
+  //virtual Int_t                       AcceptFlavourJet(AliEmcalJet *jet, Int_t NUM, Int_t NUM2, Int_t NUM3); // flavour jet acceptor
+  virtual Int_t                         AcceptFlavourJet(AliEmcalJet *jet, Int_t NUM); // flavour jet acceptor
 
   // parameters of detector to cut on for event
   Double_t               fPhimin;                  // phi min
@@ -106,7 +150,12 @@ protected:
   Double_t               fTrkBias;                 // track bias
   Double_t               fClusBias;                // cluster bias
   Double_t               fTrkEta;                  // eta min/max of tracks
-  Double_t              fJetPtcut;                // jet pt to cut on for correlations
+  Double_t                  fJetPtcut;                    // jet pt to cut on for correlations
+  Double_t                              fJetRad;                                  // jet radius
+  Double_t                              fConstituentCut;          // jet constituent cut
+
+  // esd track cuts
+  AliESDtrackCuts       *fesdTrackCuts;                           // esdTrackCuts
 
   // event mixing
   Int_t                         fDoEventMixing;
@@ -115,19 +164,36 @@ protected:
   // switches for plots
   Bool_t                doPlotGlobalRho;
   Bool_t                doVariableBinning;
-  Bool_t                 dovarbinTHnSparse;
-  // data type switch
-  Bool_t                useAOD;
+  Bool_t         dovarbinTHnSparse;
+  Bool_t                makeQAhistos;
+  Bool_t                makeBIAShistos;
+  Bool_t                makeextraCORRhistos; 
+  Bool_t                makeoldJEThadhistos;
+  Bool_t                allpidAXIS;
+
+  // Cut type (EMCAL/TPC acceptance)
+  TString        fcutType;
 
   // switches for PID
   Bool_t                doPID;
+  Bool_t                doPIDtrackBIAS;
+
+  // do comment switch
+  Bool_t                doComments;
+
+  // do flavour jet analysis switch, and set flavour jet tag
+  Bool_t            doFlavourJetAnalysis;
+  Int_t                         fJetFlavTag;
+
+  // beam type
+  BeamType fBeam;
 
   // local rho value
   Double_t              fLocalRhoVal;
 
   // object names
   TString               fTracksName;
+  TString               fTracksNameME;
   TString               fJetsName;
 
   // event counter
@@ -135,32 +201,30 @@ protected:
 
   // boolean functions for PID
   Bool_t                isPItpc, isKtpc, isPtpc;
-  Double_t                      nPIDtpc;
-
   Bool_t                isPIits, isKits, isPits;
-  Double_t                      nPIDits;  
-
   Bool_t                isPItof, isKtof, isPtof;
-  Double_t                      nPIDtof;
 
   // event pool
-  TObjArray*            CloneAndReduceTrackList(TObjArray* tracks);
-  AliEventPoolManager   *fPoolMgr;  // event pool Manager object
+  TObjArray                *CloneAndReduceTrackList(TObjArray* tracks);
+  AliEventPoolManager   *fPoolMgr;//!  // event pool Manager object
 
   // PID
   AliPIDResponse       *fPIDResponse;   // PID response object
   AliTPCPIDResponse    *fTPCResponse;   // TPC pid response object
 
  private:
-  // needed for PID
-  AliESDEvent     *fESD;                  //ESD object
-  AliAODEvent    *fAOD;                  //AOD object
+  // needed for PID, track objects
+  AliESDEvent       *fESD;//!         // ESD object
+  AliAODEvent      *fAOD;//!             // AOD object
+  AliVEvent            *fVevent;//!      // Vevent object
+
+  TH1F                             *fHistEventQA;//!
 
-  TH2F                  *fHistTPCdEdX;
-  TH2F                 *fHistITSsignal;
-//  TH2F                   *fHistTOFsignal;
+  TH2F                  *fHistTPCdEdX;//!
+  TH2F                 *fHistITSsignal;//!
+//  TH2F                   *fHistTOFsignal;//!
 
-  TH2F                  *fHistRhovsCent; //!
+  TH2F                  *fHistRhovsCent;//!
   TH2F                  *fHistNjetvsCent;//! number of jets versus Centrality
   TH2F                  *fHistJetPtvsTrackPt[6];//!
   TH2F                  *fHistRawJetPtvsTrackPt[6];//!
@@ -169,67 +233,78 @@ protected:
   TH1F                  *fHistEP0A[6];//!
   TH1F                  *fHistEP0C[6];//!
   TH2F                  *fHistEPAvsC[6];//!
+  TH1F                                 *fHistJetPtcorrGlRho[6];//!
   TH2F                  *fHistJetPtvsdEP[6];//!
   TH2F                  *fHistJetPtvsdEPBias[6];//!
-  TH2F                  *fHistRhovsdEP[6]; //!
+  TH2F                  *fHistRhovsdEP[6];//!
   TH3F                  *fHistJetEtaPhiPt[6];//!
   TH3F                  *fHistJetEtaPhiPtBias[6];//!
   TH2F                  *fHistJetPtArea[6];//!
   TH2F                  *fHistJetPtAreaBias[6];//!
-  TH2F                  *fHistJetPtNcon[6]; //!
-  TH2F                  *fHistJetPtNconBias[6]; //!
-  TH2F                  *fHistJetPtNconCh[6]; //!
-  TH2F                  *fHistJetPtNconBiasCh[6]; //!
-  TH2F                  *fHistJetPtNconEm[6]; //!
-  TH2F                  *fHistJetPtNconBiasEm[6]; //!
-  TH1F                 *fHistJetHaddPhiINcent[6];
-  TH1F                 *fHistJetHaddPhiOUTcent[6];
-  TH1F                 *fHistJetHaddPhiMIDcent[6];
-// ***********************
-  TH1                   *fHistCentrality;
-  TH1                   *fHistZvtx;
-  TH1                   *fHistMult;
-  TH1                  *fHistJetPhi;
-  TH1                  *fHistTrackPhi;
-  TH1                  *fHistJetHaddPhiIN;
-  TH1                  *fHistJetHaddPhiOUT;
-  TH1                  *fHistJetHaddPhiMID;
-  TH1                  *fHistJetHaddPhiBias;
-  TH1                  *fHistJetHaddPhiINBias;
-  TH1                  *fHistJetHaddPhiOUTBias;
-  TH1                  *fHistJetHaddPhiMIDBias;
-
-  TH1                   *fHistMEdPHI; // phi distrubtion of mixed events
-  TH1                  *fHistTrackPtallcent;
-
-  TH2                   *fHistJetEtaPhi;  
-  TH2                   *fHistTrackEtaPhi[4][7];
-  TH1                  *fHistJetHadbindPhi[9]; 
-  TH1                  *fHistJetHadbindPhiIN[9]; 
-  TH1                  *fHistJetHadbindPhiMID[9]; 
-  TH1                  *fHistJetHadbindPhiOUT[9]; 
-  TH2                   *fHistJetHEtaPhi;
-
-  TH1                   *fHistJetPt[2];
-  TH1                   *fHistJetPtBias[2];
-  TH1                   *fHistJetPtTT[2];
-  TH2                   *fHistAreavsRawPt[2];
-  TH2                   *fHistJetH[2][5][3];
-  TH2                   *fHistJetHBias[2][5][3];
-  TH2                   *fHistJetHTT[2][5][3];
-  TH1F                 *fHistJetHdPHI[11];
-  TH2F                 *fHistJetHdETAdPHI[11];
-  TH2F                  *fHistSEphieta; // single events phi-eta distributions
-  TH2F                  *fHistMEphieta; // mixed events phi-eta distributions
-  TH1F                 *fHistJetHaddPHI;
+  TH2F                  *fHistJetPtNcon[6];//!
+  TH2F                  *fHistJetPtNconBias[6];//!
+  TH2F                  *fHistJetPtNconCh[6];//!
+  TH2F                  *fHistJetPtNconBiasCh[6];//!
+  TH2F                  *fHistJetPtNconEm[6];//!
+  TH2F                  *fHistJetPtNconBiasEm[6];//!
+  TH1F                     *fHistJetHaddPhiINcent[6];//!
+  TH1F                         *fHistJetHaddPhiOUTcent[6];//!
+  TH1F                         *fHistJetHaddPhiMIDcent[6];//!
+
+  TH1                   *fHistCentrality;//!
+  TH1                   *fHistZvtx;//!
+  TH1                   *fHistMult;//!
+  TH1                          *fHistJetPhi;//!
+  TH1                      *fHistTrackPhi;//!
+  TH1                      *fHistJetHaddPhiIN;//!
+  TH1                          *fHistJetHaddPhiOUT;//!
+  TH1                          *fHistJetHaddPhiMID;//!
+  TH1                                  *fHistJetHaddPhiBias;//!
+  TH1                                  *fHistJetHaddPhiINBias;//!
+  TH1                                  *fHistJetHaddPhiOUTBias;//!
+  TH1                                  *fHistJetHaddPhiMIDBias;//!
+
+  TH1                   *fHistMEdPHI;//! // phi distrubtion of mixed events
+  TH1                                  *fHistTrackPtallcent;//!
+
+  TH2                   *fHistJetEtaPhi;//!  
+  TH2                   *fHistTrackEtaPhi[4][7];//!
+  TH1                          *fHistJetHadbindPhi[9];//! 
+  TH1                                  *fHistJetHadbindPhiIN[9];//! 
+  TH1                                  *fHistJetHadbindPhiMID[9];//! 
+  TH1                          *fHistJetHadbindPhiOUT[9];//! 
+  TH2                   *fHistJetHEtaPhi;//!
+
+  TH1                   *fHistJetPt[6];//!
+  TH1                   *fHistJetPtBias[6];//!
+  TH1                   *fHistJetPtTT[6];//!
+  TH2                   *fHistAreavsRawPt[6];//!
+  TH2                   *fHistJetH[6][5][3];//!
+  TH2                   *fHistJetHBias[6][5][3];//!
+  TH2                   *fHistJetHTT[6][5][3];//!
+  TH1F                                 *fHistJetHdPHI[11];//!
+  TH2F                                 *fHistJetHdETAdPHI[11];//!
+  TH2F                  *fHistSEphieta;//! // single events phi-eta distributions
+  TH2F                  *fHistMEphieta;//! // mixed events phi-eta distributions
+  TH1F                                 *fHistJetHaddPHI;//!
 
   // PID status histo's
-  TH1                  *fHistPID;
+  TH1                                  *fHistPID;//!
 
   // THn Sparse's
-  THnSparse             *fhnPID;          // PID sparse
-  THnSparse             *fhnMixedEvents;  // mixed events matrix
-  THnSparse             *fhnJH;           // jet hadron events matrix
+  THnSparse             *fhnPID;//!          // PID sparse
+  THnSparse             *fhnMixedEvents;//!  // mixed events matrix
+  THnSparse             *fhnJH;//!           // jet hadron events matrix
+  THnSparse                            *fhnCorr;//!              // sparse to get # jet triggers
+
+  // container objects
+  AliJetContainer            *fJetsCont;                   //!Jets
+  AliParticleContainer       *fTracksCont;                 //!Tracks
+  AliClusterContainer        *fCaloClustersCont;           //!Clusters
+
+  // container specifier
+  Int_t                                        fContainerAllJets;  // number of container with all full jets
+  Int_t                                        fContainerPIDJets;  // number of container with full jets meeting Pt cut (for PID)
 
 // ***********************************************************