]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/JetTasks/AliAnalysisTaskUE.h
added switch for event slection in cluster task, updated plot notand JetSpectrum...
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalysisTaskUE.h
index caa575d9748043888777f076594705235ba9c87c..59c43ef9f9a007a9a13e54eab89a2c3a6cae31fa 100644 (file)
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
-#include "AliAnalysisTaskSE.h"
+////////////////////////////////////////////////////////////////////////
+//
+// Analysis class for Underlying Event studies
+//
+// Look for correlations on the tranverse regions to 
+// the leading charged jet
+//
+// This class needs as input AOD with track and Jets.
+// The output is a list of histograms
+//
+// AOD can be either connected to the InputEventHandler  
+// for a chain of AOD files 
+// or 
+// to the OutputEventHandler
+// for a chain of ESD files, so this case class should be 
+// in the train after the Jet finder
+//
+//    Arian.Abrahantes.Quintana@cern.ch 
+//    Ernesto.Lopez.Torres@cern.ch
+//    vallero@physi.uni-heidelberg.de
+// 
+////////////////////////////////////////////////////////////////////////
 
-class AliESDEvent;
+#include "AliAnalysisTask.h"
+
+class AliAnalyseUE;
+class AliHistogramsUE;
 class AliAODEvent;
+class AliAODInputHandler;
+class AliESDEvent;
 class TH1F;
 class TH2F;
 class TH1I;
-class TVector3;
+class TProfile;
 class TTree;
+class TVector3;
 
 class  AliAnalysisTaskUE : public AliAnalysisTask
   {
   public:
     AliAnalysisTaskUE(const char* name="AliAnalysisTaskUE");
-    virtual           ~AliAnalysisTaskUE() {;}
-    
+    virtual           ~AliAnalysisTaskUE() {if ( fListOfHistos ) delete fListOfHistos; }
+    AliAnalysisTaskUE(const  AliAnalysisTaskUE &det);
+    AliAnalysisTaskUE&   operator=(const  AliAnalysisTaskUE &det);
+       
+    // return instance of the singleton
+    static  AliAnalysisTaskUE* Instance();
+      
     // 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 *);
+
+    //  Setters/Getters
+    virtual     void         SetDebugLevel( Int_t level )  { fDebug = level; }
+    virtual     Int_t        GetDebugLevel() const  { return fDebug; }
     
-    //  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   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   SetUseSingleCharge()  { fUseSingleCharge = kTRUE; } 
+    void       SetPtRangeInHist( Int_t bin, Double_t min, Double_t max ) {
+                       fBinsPtInHist = bin; 
+                       fMinJetPtInHist = min; 
+                       fMaxJetPtInHist = max; 
+                       }
+
+    // Read AODs
+    void         SelectAODBranch(const char* val)      { fAODBranch = val;   }
+    virtual       TString       GetAODBranch() const   { return fAODBranch;   }
+    virtual       AliAODEvent*   GetAOD() const         { return fAOD; } 
+
+    // Setters/Getters for MC
+    void       SetConstrainDistance(Bool_t val1, Double_t val2){ fMinDistance = val2; fConstrainDistance = val1;}
+    void       SetSimulateChJetPt(){fSimulateChJetPt = kTRUE;}
+    void       SetUseAODMCParticle(){fUseAliStack = kFALSE;}
+    void       SetUseMCBranch(){fUseMCParticleBranch = kTRUE;}
+
+    virtual Bool_t     GetConstrainDistance()   const  {return fConstrainDistance;}
+    virtual Double_t   GetMinDistance()         const  {return fMinDistance;}
+    virtual Bool_t     GetSimulateChJetPt()     const  {return fSimulateChJetPt;}
+    virtual Bool_t     GetUseAODMCParticle()    const  {return fUseAliStack;}
+    virtual Bool_t     GetUseMCParticleBranch() const  {return fUseMCParticleBranch;}
+
+    //Setters for Events QA
+    void  SetZVertex( Double_t val ) { fZVertex = val; }
+    void  SetTracksInVertex( Int_t val ){ fnTracksVertex = val; }
+    
+    // Setters/Getters for UE Analysis
+    void   SetAnaTopology( Int_t val )       { fAnaType = val;    }
+    void   SetConePosition(Int_t val)        { fConePosition= val; }
+    void   SetConeRadius( Double_t val )     { fConeRadius = val; }
+    void   SetDoNotNormalizeQuantities()     { fIsNorm2Area = kFALSE; }
+    void   SetFilterBit( UInt_t val )        { fFilterBit = val;  }
+    void   SetJetsOnFly( Bool_t val )        { fJetsOnFly = val;  }
+    void   SetPtSumOrdering( Int_t val )     { fOrdering = val;   }
+    void   SetRegionType( Int_t val )        { fRegionType = val; }
+    void   SetUseChargeHadrons( Bool_t val ) { fUseChargeHadrons = val; }
+    void   SetUseChPartJet( Int_t val )      { fUseChPartJet = val; }
     void   SetUseNegativeChargeType()        { fUsePositiveCharge = kFALSE; }
+    void   SetUseSingleCharge()              { fUseSingleCharge = kTRUE; } 
+    
+    virtual Int_t     GetAnaTopology()             const     { return fAnaType; }
+    virtual Int_t     GetConePosition()             const     { return fConePosition; }
+    virtual Double_t  GetConeRadius()                      const     { return fConeRadius; }
+    virtual Bool_t    GetDoNotNormalizeQuantities() const     { return fIsNorm2Area; }
+    virtual UInt_t    GetFilterBit()               const     { return fFilterBit;  }
+    virtual Bool_t    GetJetsOnFly()               const     { return fJetsOnFly;  }
+    virtual Int_t     GetPtSumOrdering()            const     { return fOrdering;   }
+    virtual Int_t     GetRegionType()               const     { return fRegionType; }
+    virtual Bool_t    GetUseChargeHadrons()         const     { return fUseChargeHadrons; }
+    virtual Int_t     GetUseChPartJet()             const     { return fUseChPartJet; }
+    virtual Bool_t    GetUseNegativeChargeType()    const     { return fUsePositiveCharge; }
+    virtual Bool_t    GetUseSingleCharge()          const     { return fUseSingleCharge; } 
+    
     // 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; }
+    void   SetPtMinChPartJet( Double_t val )  { fChJetPtMin = val; }
+    
+    virtual Double_t   GetJet1EtaCut()       const      { return fJet1EtaCut; }
+    virtual Double_t   GetJet2DeltaPhiCut()  const     { return fJet2DeltaPhiCut; }
+    virtual Double_t   GetJet2RatioPtCut()   const      { return fJet2RatioPtCut; }
+    virtual Double_t   GetJet3PtCut()        const      { return fJet3PtCut; }
+    virtual Double_t   GetPtMinChPartJet()   const      { return fChJetPtMin; }
+    
     // track cuts
-    void   SetTrackPtCut( Double_t val )  { fTrackPtCut = val; }
     void   SetTrackEtaCut( Double_t val ) { fTrackEtaCut = val; }
+    void   SetTrackPtCut( Double_t val )  { fTrackPtCut = val; }
+
+    virtual Double_t   GetTrackEtaCut() const     { return fTrackEtaCut; }
+    virtual Double_t   GetTrackPtCut()  const     { return fTrackPtCut; }
     
+
+    AliHistogramsUE*    fHistosUE;        //! points to AliHistogramsUE class   
+  protected:
+  static AliAnalysisTaskUE*     fgTaskUE;        // Pointer to single instance
+
   private:
-    AliAnalysisTaskUE(const  AliAnalysisTaskUE &det);
-    AliAnalysisTaskUE&   operator=(const  AliAnalysisTaskUE &det);
+    void         AddSettingsTree();    
+    void         AnalyseUE();
+    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 );
+    void         FillSumPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
+    TObjArray*   FindChargedParticleJets();
+    Int_t        IsTrackInsideRegion(TVector3 *jetVect, TVector3 *partVect);
+    void         QSortTracks(TObjArray &a, Int_t first, Int_t last);
+    void         SetRegionArea(TVector3 *jetVect);
+    TObjArray*   SortChargedParticles();
+    void         WriteSettings();
     
-    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   fDebug;           //  Debug flag
-    AliAODEvent*  fAOD;             //! AOD Event 
-    AliAODEvent*  fAODjets;         //! AOD Event for reconstructed on the fly (see ConnectInputData()
-    TList*  fListOfHistos;    //  Output list of histograms
+    AliAnalyseUE*       fAnaUE;           //! points to AliAnalyseUE class
+    AliAODEvent*        fAOD;             //! AOD Event 
+    TString             fAODBranch;       //  Jet branch name from standard AOD
+    Int_t               fDebug;           //  Debug flag
+    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   ?
+    Int_t              fBinsPtInHist;     //  # bins for Pt histos range
+    Bool_t             fIsNorm2Area;      // Apply Area Normalization to collected observables
+    Double_t           fMaxJetPtInHist;   //  max Jet Pt value for histo range
+    Double_t           fMinJetPtInHist;   //  min Jet Pt value for histo range
+    
+    // For MC
+    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
+    Bool_t             fUseMCParticleBranch;  // Run Over mcparticles branch in AOD
+    
+    // Cuts Events type
+    Int_t              fnTracksVertex;        // QA tracks pointing to principal vertex (= 3 default) 
+    Double_t           fZVertex;              // Position of Vertex in Z direction
+    
+    // Cuts UE analysis
+    Int_t              fAnaType;              // Analysis type on jet topology: 
+                                                 //     1=inclusive  (default) 
+                                                 //     2=back to back inclusive
+                                                 //     3=back to back exclusive
+                                                 //     4=Pt max (max Pt track in region)
+                                                 //     5=gama jet (back to back) ???
+                                                 //  Minimum bias
+                                                 //     31 = Semi jet (charged leading particle jets)
+                                                 //     32 = Random jetcone  ?
+                                                 //     33 = Swiss chees   ?
+    
+    
+    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           fConeRadius;           // if selected Cone-like region type, set Radius (=0.7 default)
+    
+    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() )
     
     // 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)
-    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()
+    Int_t              fRegionType;           // 1 = transverse regions (default)
+                                              // 2 = cone regions   
+    
+
+
+    Bool_t             fUseChargeHadrons;     // Only use charge hadrons
+    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   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)
+    Bool_t             fUsePositiveCharge;    //If Single type of charge used then set which one (=kTRUE default positive)
+    Bool_t             fUseSingleCharge;      //Make analysis for a single type of charge (=kFALSE 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
+                       //       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=Nameless pt per track single sorting
+                       //        sort according to pt per track scored in each transverse zone 
+                       //        lowest values indicates minimum zone.   
+                       //     4=User Selection sorting (NOTE: USER must implement it within cxx)
+   
+    
+    // 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)
-    
-    // Histograms    ( are owned by fListOfHistos TList )
-    TH1F*  fhNJets;                  //!
-    TH1F*  fhEleadingPt;             //!
-    
-    TH1F*  fhMinRegPtDist;           //!
-    TH1F*  fhRegionMultMin;          //!
-    TH1F*  fhMinRegAvePt;            //!
-    TH1F*  fhMinRegSumPt;            //!
-    TH1F*  fhMinRegMaxPtPart;        //!
-    TH1F*  fhMinRegSumPtvsMult;      //!
+    Double_t           fTrackEtaCut;      // Eta cut on tracks in the regions (fRegionType=1)
+    Double_t           fTrackPtCut;       // Pt cut of tracks in the regions
+   
+    // MC cross-section 
+    Double_t           fAvgTrials;        // average trials used to fill the fh1Trials histogram in case we do not have trials on a event by event basis
     
-    TH1F*  fhdNdEtaPhiDist;         //!
-    TH2F*  fhFullRegPartPtDistVsEt;  //!
-    TH2F*  fhTransRegPartPtDistVsEt; //!
+    /*
+    // Histograms
+    TH1F*  fhNJets;                  //! number of reco. jets or leading particles
+    TH1F*  fhEleadingPt;             //! pT distribution of leading-jet (leading-particle)
     
-    TH1F*  fhRegionSumPtMaxVsEt;     //!
-    TH1I*  fhRegionMultMax;          //!
-    TH1F*  fhRegionMultMaxVsEt;      //!
-    TH1F*  fhRegionSumPtMinVsEt;     //!
-    TH1F*  fhRegionMultMinVsEt;      //!
-    TH1F*  fhRegionAveSumPtVsEt;     //!
-    TH1F*  fhRegionDiffSumPtVsEt;    //!
+    TH1F*  fhMinRegPtDist;           //! pT distribution in MIN region
+    TH1F*  fhRegionMultMin;          //! average pT in MIN region
+    TH1F*  fhMinRegAvePt;            //! sum pT in MIN region
+    TH1F*  fhMinRegSumPt;            //! maximum particle pT in MAX region
+    TH1F*  fhMinRegMaxPtPart;        //! sum pT vs. multiplicity in MIN region
+    TH1F*  fhMinRegSumPtvsMult;      //!
     
-    TH1F*  fhRegionAvePartPtMaxVsEt; //!
-    TH1F*  fhRegionAvePartPtMinVsEt; //!
-    TH1F*  fhRegionMaxPartPtMaxVsEt; //!
+    TH2F*  fhdNdEtaPhiDist;          //! phi and eta correlation with leading-jet (leading particle)
+    TH2F*  fhFullRegPartPtDistVsEt;  //! particle pT distribution vs. transverse energy in FULL region
+    TH2F*  fhTransRegPartPtDistVsEt; //! particle pT distribution vs. transverse energy in TRANSVERSE (MIN+MAX) region 
     
-    TTree* fSettingsTree;            //! Fast Settings saving
+    TH1F*  fhRegionSumPtMaxVsEt;     //! sum pT vs. transverse energy in MAX region
+    TH1I*  fhRegionMultMax;          //! multiplicity in MAX region 
+    TH1F*  fhRegionMultMaxVsEt;      //! multiplicity vs. transverse energy in MAX region
+    TH1F*  fhRegionSumPtMinVsEt;     //! sum pT vs. transverse energy in MIN region
+    TH1F*  fhRegionMultMinVsEt;      //! multiplicity vs. transverse energy in MIN region
+    TH1F*  fhRegionAveSumPtVsEt;     //! average sum pT in 2 regions
+    TH1F*  fhRegionDiffSumPtVsEt;    //! difference sum pT in 2 regions
     
-    //        TH2F*  fhValidRegion; //! test to be canceled
+    TH1F*  fhRegionAvePartPtMaxVsEt; //! average particle pT vs. transverse energy in MAX region
+    TH1F*  fhRegionAvePartPtMinVsEt; //! average particle pT vs. transverse energy in MIN region
+    TH1F*  fhRegionMaxPartPtMaxVsEt; //! maximum particle pT vs. transverse energy in MAX region
     
-    ClassDef( AliAnalysisTaskUE, 1); // Analysis task for Underlying Event analysis
+    TH2F*  fhRegForwardMult;         //! multiplicity in FORWARD region
+    TH2F*  fhRegForwardSumPtvsMult;  //! sum pT vs. multiplicity in FORWARD region
+    TH2F*  fhRegBackwardMult;        //! multiplicity in BACKWARD region
+    TH2F*  fhRegBackwardSumPtvsMult; //! sum pT vs. multiplicity in BACKWARD region
+    TH2F*  fhRegForwardPartPtDistVsEt; //! particle pT distribution vs. transverse energy in FORWARD region
+    TH2F*  fhRegBackwardPartPtDistVsEt; //! particle pT distribution vs. transverse energy in BACKWARD
+    TH2F*  fhRegTransMult;         //! multiplicity in TRANSVERSE (MIN+MAX) region
+    TH2F*  fhRegTransSumPtVsMult;    //! sum pT vs. multiplicity in TRANSVERSE (MIN+MAX) region
+    TH2F*  fhMinRegSumPtJetPtBin;    //!
+    TH2F*  fhMaxRegSumPtJetPtBin;    //!
+    TH1F*  fhVertexMult;             //! vertex multiplicity
+    TProfile*  fh1Xsec;                    //! cross-section from MC   
+    TH1F*  fh1Trials;               //! number of trials from MC
+    */
+
+    ClassDef( AliAnalysisTaskUE, 6); // Analysis task for Underlying Event analysis
   };
 
 #endif