]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/JetTasks/AliAnalysisTaskUE.h
Updates for real data analysis, trigger decisions
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalysisTaskUE.h
index 0e3ad6274c3de7742d8e3768f95046d6c472178e..a0adc6d83898c9d4a9340ab2a23d650eea5e2a0e 100644 (file)
 #ifndef ALIANALYSISTASKUE_H
 #define ALIANALYSISTASKUE_H
+
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
-#include "AliAnalysisTaskSE.h"
+
+#include "AliAnalysisTask.h"
 
 class AliESDEvent;
 class AliAODEvent;
 class TH1F;
 class TH2F;
 class TH1I;
+class TProfile;
 class TVector3;
-       
+class TTree;
+
 class  AliAnalysisTaskUE : public AliAnalysisTask
-{
- public:
-                     AliAnalysisTaskUE(const char* name="AliAnalysisTaskUE");
-  virtual           ~AliAnalysisTaskUE() {;}
-  
-  // Implementation of interface methods
-  virtual     void   ConnectInputData(Option_t *);
-  virtual     void   CreateOutputObjects();
-  virtual     void   Exec(Option_t *option);
-  virtual     void   Terminate(Option_t *);
-  
-  //  Setters
-  virtual     void   SetDebugLevel(Int_t level)      { fDebug = level; }
-              void   SetPtRangeInHist(Int_t bin, Double_t min, Double_t max) { 
-                                          fBinsPtInHist = bin; 
-                                          fMinJetPtInHist = min; 
-                                          fMaxJetPtInHist = max; 
-                                       }
-  
-              void   SetAnaTopology(Int_t val)    { fAnaType = val;    }          
-              void   SetRegionType(Int_t val)     { fRegionType = val; }
-              void   SetConeRadius(Double_t val)  { fConeRadius = val; }
-              void   SetPtSumOrdering(Int_t val)  { fOrdering = val;   }
-      // Jet cuts    
-              void   SetJet1EtaCut(Double_t val)      { fJet1EtaCut = val; }
-              void   SetJet2DeltaPhiCut(Double_t val) { fJet2DeltaPhiCut = val; }
-              void   SetJet2RatioPtCut(Double_t val)  { fJet2RatioPtCut = val; }
-              void   SetJet3PtCut(Double_t val)       { fJet3PtCut = val; }
-      // track cuts
-              void   SetTrackPtCut(Double_t val)  { fTrackPtCut = val; }
-              void   SetTrackEtaCut(Double_t val) { fTrackEtaCut = val; }
+  {
+  public:
+    AliAnalysisTaskUE(const char* name="AliAnalysisTaskUE");
+    virtual           ~AliAnalysisTaskUE() {;}
+    
+    // Implementation of interace methods
+    virtual     Bool_t Notify();
+    virtual     void   ConnectInputData(Option_t *);
+    virtual     void   CreateOutputObjects();
+    virtual     void   Exec(Option_t *option);
+    virtual     void   Terminate(Option_t *);
 
-private:
-                     AliAnalysisTaskUE(const  AliAnalysisTaskUE &det);
-AliAnalysisTaskUE&   operator=(const  AliAnalysisTaskUE &det);
+    //Select the trigger
+    void SelectTrigger(Int_t trig) { fTrigger = trig; }
 
-              void   AnalyseUE();
-             Int_t   IsTrackInsideRegion(TVector3 *jetVect, TVector3 *partVect);
-              void   CreateHistos();
-              void   FillSumPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
-              void   FillAvePartPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
-              void   FillMultRegion( Double_t leadingE, Double_t nTrackPtmax, Double_t nTrackPtmin, Double_t ptMin );
-    
-       
-             Int_t   fDebug;           //  Debug flag
-       AliAODEvent*  fAOD;             //! AOD Event 
-             TList*  fListOfHistos;    //  Output list of histograms
-      
-      // Config     
-             Int_t   fBinsPtInHist;     //  # bins for Pt histos range
-          Double_t   fMinJetPtInHist;   //  min Jet Pt value for histo range
-          Double_t   fMaxJetPtInHist;   //  max Jet Pt value for histo range
-      
-      // Cuts 
-             Int_t   fAnaType;          // Analysis type on jet topology: 
-                                        //     1=inclusive  (default) 
-                                        //     2=back to back inclusive
-                                        //     3=back to back exclusive
-                                        //     4=gama jet (back to back) ???
-                                        //  Minimum bias
-                                        //     31 = Semi jet (charged leading particle jets)
-                                        //     32 = Random jetcone  ?
-                                        //     33 = Swiss chees   ?
+    //  Setters
+    virtual     void   SetDebugLevel( Int_t level )  { fDebug = level; }
+    void   SetPtRangeInHist( Int_t bin, Double_t min, Double_t max ) {
+      fBinsPtInHist = bin; 
+      fMinJetPtInHist = min; 
+      fMaxJetPtInHist = max; 
+    }
 
-             Int_t   fRegionType;       // 1 = transverse regions (default)
-                                        // 2 = cone regions   
-                                        
-             Double_t   fConeRadius;    // if selected Cone-like region type set Radius (=0.7 default)
-                                        
-             Int_t   fOrdering;         //  Pt and multiplicity summation ordering:
-                                        //     1=CDF-like -independent sorting according quantity to be scored: Double sorting- (default)
-                                        //       if Pt summation will be scored take Pt minimum between both zones and 
-                                        //          fill Pt Max. and Min. histog. accordingly
-                                        //       if Multiplicity summation will be scored take Mult. minimum between both zones and 
-                                        //          fill Mult Max and Min histog. accordingly
-                                        //     2=Marchesini-like (Only Pt sorting: Single sorting)
-                                        //          sort only according Pt summation scored, find minimum between both zones and
-                                        //          fill Pt and Multiplicity Max and Min summation histog. following only this criterium
-                                        //     3=User Selection sorting (NOTE: USER must implement it within cxx)
-                                        
-      // Jet cuts    
-          Double_t   fJet1EtaCut;        // |jet1 eta| < fJet1EtaCut   (fAnaType = 1,2,3)
-          Double_t   fJet2DeltaPhiCut;   // |Jet1.Phi - Jet2.Phi| < fJet2DeltaPhiCut (fAnaType = 2,3)
-          Double_t   fJet2RatioPtCut;    // Jet2.Pt/Jet1Pt > fJet2RatioPtCut  (fAnaType = 2,3)
-          Double_t   fJet3PtCut;         // Jet3.Pt < fJet3PtCut  (fAnaType = 3)
-      // track cuts
-          Double_t   fTrackPtCut;        // Pt cut of tracks in the regions
-          Double_t   fTrackEtaCut;       // Eta cut on tracks in the regions (fRegionType=1)
+    // Read deltaAODs
+    void   ReadDeltaAOD()                   { fDeltaAOD = kTRUE; }
+    void   SelectDeltaAODBranch(const char* val)     { fDeltaAODBranch = val;   }
+
+    // Setters for MC
+    void  SetUseMCBranch(){fUseMCParticleBranch = kTRUE;}
+    void  SetConstrainDistance(Bool_t val1, Double_t val2){ fMinDistance = val2; fConstrainDistance = val1;}
+    void  SetSimulateChJetPt(){fSimulateChJetPt = kTRUE;}
+    void  SetUseAODMCParticle(){fUseAliStack = kFALSE;}
+    
+    void   SetAnaTopology( Int_t val )    { fAnaType = val;    }
+    void   SetRegionType( Int_t val )     { fRegionType = val; }
+    void   SetUseChPartJet( Int_t val )   { fUseChPartJet = val; }
+    void   SetPtSumOrdering( Bool_t val ) { fOrdering = val;   }
+    void   SetFilterBit( UInt_t val )     { fFilterBit = val;  }
+    void   SetJetsOnFly( Bool_t val )     { fJetsOnFly = val;  }
+    void   SetConeRadius( Double_t val )  { fConeRadius = val; }
+    void   SetConePosition(Int_t val)     { fConePosition= val; }
+    void   SetUseSingleCharge()  { fUseSingleCharge = kTRUE; } 
+    void   SetUseNegativeChargeType()        { fUsePositiveCharge = kFALSE; }
+    // Jet cuts
+    void   SetPtMinChPartJet( Double_t val )  { fChJetPtMin = val; }
+    void   SetJet1EtaCut( Double_t val )      { fJet1EtaCut = val; }
+    void   SetJet2DeltaPhiCut( Double_t val ) { fJet2DeltaPhiCut = val; }
+    void   SetJet2RatioPtCut( Double_t val )  { fJet2RatioPtCut = val; }
+    void   SetJet3PtCut( Double_t val )       { fJet3PtCut = val; }
+    // track cuts
+    void   SetTrackPtCut( Double_t val )  { fTrackPtCut = val; }
+    void   SetTrackEtaCut( Double_t val ) { fTrackEtaCut = val; }
+    
+  private:
+    AliAnalysisTaskUE(const  AliAnalysisTaskUE &det);
+    AliAnalysisTaskUE&   operator=(const  AliAnalysisTaskUE &det);
+    
+    void   AnalyseUE();
+    Int_t   IsTrackInsideRegion(TVector3 *jetVect, TVector3 *partVect);
+    void   CreateHistos();
+    void   SetRegionArea(TVector3 *jetVect);
+    void   FillSumPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
+    void   FillAvePartPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
+    void   FillMultRegion( Double_t leadingE, Double_t nTrackPtmax, Double_t nTrackPtmin, Double_t ptMin );
+    TObjArray*  FindChargedParticleJets();
+    void   QSortTracks(TObjArray &a, Int_t first, Int_t last);
+    void   WriteSettings();
+    
+    Int_t      fTrigger;         //Trigger flag as defined in AliAnalysisHelperJetTasks.h
+    Int_t      fDebug;           //  Debug flag
+    Bool_t      fDeltaAOD;        //  Read jets from delta AOD 
+    TString     fDeltaAODBranch;  //  Jet branch name from delta AOD
+    TClonesArray*  fArrayJets;       //  Array of Jets from delta AOD
+
+    AliAODEvent*  fAOD;             //! AOD Event 
+    AliAODEvent*  fAODjets;         //! AOD Event for reconstructed on the fly (see ConnectInputData()
+    TList*  fListOfHistos;    //  Output list of histograms
+    
+    // Config
+    Int_t   fBinsPtInHist;     //  # bins for Pt histos range
+    Double_t   fMinJetPtInHist;   //  min Jet Pt value for histo range
+    Double_t   fMaxJetPtInHist;   //  max Jet Pt value for histo range
+    
+    // For MC
+    Bool_t fUseMCParticleBranch;  // Run Over mcparticles branch in AOD
+    Bool_t fConstrainDistance;    // Constrain Distance between rec jet and pyth
+    Double_t fMinDistance;  // Minimum distance between rec jet and pyth
+    Bool_t fSimulateChJetPt; // Naive simulation of charged jet Pt from original Jet in MC Header
+    Bool_t fUseAliStack;     // Use AliSatck for particle info otherwise "mcparticles" branch in AOD
+    
+    // Cuts 
+    Int_t   fAnaType;          // Analysis type on jet topology: 
+    //     1=inclusive  (default) 
+    //     2=back to back inclusive
+    //     3=back to back exclusive
+    //     4=gama jet (back to back) ???
+    //  Minimum bias
+    //     31 = Semi jet (charged leading particle jets)
+    //     32 = Random jetcone  ?
+    //     33 = Swiss chees   ?
+    
+    // UE analysis is conducted in different type of regions
+    // Transverse are those like defined in: R. Field Acta Physica Polonica B. Vol 36 No. 2 pg 167 (2005) 
+    // Cone regions like defined in: Phys. Rev. D 70, 072002 (2004)
+    Int_t   fRegionType;       // 1 = transverse regions (default)
+    // 2 = cone regions   
+    Double_t   fConeRadius;       // if selected Cone-like region type, set Radius (=0.7 default)
+    Int_t   fConePosition;     // This parameter set how will cone center in transversal zone will be set
+    //    1 : To be used in any jet topology (default value)
+    //        eta_cone = eta_leadingjet
+    //        phi_cone = phi_leadingjet + - 90
+    //    2 : To be used in multiple jet topology (code will cry otherwise)
+    //        eta_cone = (eta_leadingjet + eta_subleadingjet)/2
+    //        phi_cone = phi_leadingjet + - 90
+    Double_t   fAreaReg;       // Area of the region To be used as normalization factor when filling histograms
+    // if fRegionType = 2 not always it is included within eta range
+    Bool_t   fUseChPartJet;     // Use "Charged Particle Jet" instead of jets from AOD
+    // see FindChargedParticleJets()
+    
+    // Theoreticians ask for tools charge-aware
+    // especially those which are related to multiplicity and MC-tunings
+    // see arXiv:hep-ph/0507008v3
+    Bool_t   fUseSingleCharge;     //Make analysis for a single type of charge (=kFALSE default)
+    Bool_t   fUsePositiveCharge;   //If Single type of charge used then set which one (=kTRUE default positive)
+    
+    Int_t   fOrdering;         //  Pt and multiplicity summation ordering:
+    //     1=CDF-like -independent sorting according quantity to be scored: Double sorting- (default)
+    //       if Pt summation will be scored take Pt minimum between both zones and 
+    //          fill Pt Max. and Min. histog. accordingly
+    //       if Multiplicity summation will be scored take Mult. minimum between both zones and 
+    //          fill Mult Max and Min histog. accordingly
+    //       Bib:
+    //     2=Marchesini-like (Only Pt sorting: Single sorting)
+    //          sort only according Pt summation scored, find minimum between both zones and
+    //          fill Pt and Multiplicity Max and Min summation histog. following only this criterium
+    //       Bib: Phys. Rev. D 38, 3419 (1988)
+    //     3=User Selection sorting (NOTE: USER must implement it within cxx)
+    
+    UInt_t   fFilterBit;        // Select tracks from an specific track cut (default 0xFF all track selected)
+    Bool_t   fJetsOnFly;        // if jets are reconstructed on the fly from AOD tracks (see ConnectInputData() )
+    
+    // Jet cuts 
+    Double_t   fChJetPtMin;       // Min Pt for charged Particle Jet
+    Double_t   fJet1EtaCut;       // |jet1 eta| < fJet1EtaCut   (fAnaType = 1,2,3)
+    Double_t   fJet2DeltaPhiCut;  // |Jet1.Phi - Jet2.Phi| < fJet2DeltaPhiCut (fAnaType = 2,3)
+    Double_t   fJet2RatioPtCut;   // Jet2.Pt/Jet1Pt > fJet2RatioPtCut  (fAnaType = 2,3)
+    Double_t   fJet3PtCut;        // Jet3.Pt < fJet3PtCut  (fAnaType = 3)
+    // track cuts
+    Double_t   fTrackPtCut;       // Pt cut of tracks in the regions
+    Double_t   fTrackEtaCut;      // Eta cut on tracks in the regions (fRegionType=1)
+    Double_t   fAvgTrials;        // average trials used to fill the fh1Triasl histogram in case we do not have trials on a event by event basis
+                
+    // Histograms    ( are owned by fListOfHistos TList )
+    TH1F*  fhNJets;                  //!
+    TH1F*  fhEleadingPt;             //!
+    
+    TH1F*  fhMinRegPtDist;           //!
+    TH1F*  fhRegionMultMin;          //!
+    TH1F*  fhMinRegAvePt;            //!
+    TH1F*  fhMinRegSumPt;            //!
+    TH1F*  fhMinRegMaxPtPart;        //!
+    TH1F*  fhMinRegSumPtvsMult;      //!
+    
+    TH1F*  fhdNdEtaPhiDist;         //!
+    TH2F*  fhFullRegPartPtDistVsEt;  //!
+    TH2F*  fhTransRegPartPtDistVsEt; //!
+    
+    TH1F*  fhRegionSumPtMaxVsEt;     //!
+    TH1I*  fhRegionMultMax;          //!
+    TH1F*  fhRegionMultMaxVsEt;      //!
+    TH1F*  fhRegionSumPtMinVsEt;     //!
+    TH1F*  fhRegionMultMinVsEt;      //!
+    TH1F*  fhRegionAveSumPtVsEt;     //!
+    TH1F*  fhRegionDiffSumPtVsEt;    //!
+    
+    TH1F*  fhRegionAvePartPtMaxVsEt; //!
+    TH1F*  fhRegionAvePartPtMinVsEt; //!
+    TH1F*  fhRegionMaxPartPtMaxVsEt; //!
+    
+    //        TH2F*  fhValidRegion; //! test to be canceled
+    
+    TProfile* fh1Xsec;               //!
+    TH1F*  fh1Trials;                //!
+    
+    TTree* fSettingsTree;            //! Fast Settings saving
+    
+    
+    
+    ClassDef( AliAnalysisTaskUE, 3); // Analysis task for Underlying Event analysis
+  };
 
-      // Histograms    ( are owner by fListOfHistos TList )
-              TH1F*  fhNJets;                  //!
-              TH1F*  fhEleadingPt;             //!
-              
-              TH1F*  fhMinRegPtDist;
-              TH1F*  fhRegionMultMin;
-              TH1F*  fhMinRegAvePt; 
-              TH1F*  fhMinRegSumPt;            
-              TH1F*  fhMinRegMaxPtPart;
-              TH1F*  fhMinRegSumPtvsMult;
-              
-              TH1F*  fhdNdEta_PhiDist;         //!
-              TH2F*  fhFullRegPartPtDistVsEt;  //!
-              TH2F*  fhTransRegPartPtDistVsEt; //!
-              
-              TH1F*  fhRegionSumPtMaxVsEt;     //!
-              TH1I*  fhRegionMultMax;          //!
-              TH1F*  fhRegionMultMaxVsEt;      //!
-              TH1F*  fhRegionSumPtMinVsEt;     //!
-              TH1F*  fhRegionMultMinVsEt;      //!
-              TH1F*  fhRegionAveSumPtVsEt;     //!
-              TH1F*  fhRegionDiffSumPtVsEt;    //!
-                     
-              TH1F*  fhRegionAvePartPtMaxVsEt; //!
-              TH1F*  fhRegionAvePartPtMinVsEt; //!
-              TH1F*  fhRegionMaxPartPtMaxVsEt; //!
-              
-      //        TH2F*  fhValidRegion; //! test to be canceled
-         
-    ClassDef( AliAnalysisTaskUE, 1) // Analysis task for Underlying Event analysis
-};
 #endif
+
+