updates jet mass detector response
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliJetFastSimulation.h
1 #ifndef ALIJETFASTSIMULATION_H
2 #define ALIJETFASTSIMULATION_H
3
4 // $Id$
5
6 class TClonesArray;
7 class TRandom3;
8 class AliVParticle;
9 class AliPicoTrack;
10
11 #include "AliAnalysisTaskEmcal.h"
12
13 class AliJetFastSimulation : public AliAnalysisTaskEmcal {
14  public:
15   AliJetFastSimulation();
16   AliJetFastSimulation(const char *name); 
17   virtual ~AliJetFastSimulation();
18
19   virtual void           LocalInit();
20   virtual void           UserCreateOutputObjects();
21
22   void                   SetTracksOutName(const char *n)          { fTracksOutName   = n;    }
23   void                   SetNTrackClasses(Int_t i)                { fNTrackClasses   = i;    }
24   void                   SetFixedTrackEfficiency(Double_t eff)    { fEfficiencyFixed = eff ; }
25
26   void                   SetUseTrResolutionFromOADB(Bool_t b=kTRUE, TString path="$ALICE_ROOT/OADB/PWGJE/Resolution/PtResol_LHCh_Cent0-10_v1.root") {fUseTrPtResolutionFromOADB = b; fPathTrPtResolution=path;}
27   void                   SetUseTrEfficiencyFromOADB(Bool_t b=kTRUE, TString path="$ALICE_ROOT/OADB/PWGJE/Efficiency/Efficiency_LHC11a2aj_Cent0_v1.root") {fUseTrEfficiencyFromOADB = b; fPathTrEfficiency=path;}
28   void                   SetSmearResolution(Bool_t b)                               { fUseTrPtResolutionSmearing = b ;}
29   void                   SetDiceEfficiency(Int_t b)                                 { fUseDiceEfficiency         = b ;}
30   void                   SetDiceEfficiencyMinPt(Double_t pt)                        { fDiceEfficiencyMinPt       = pt;}
31
32  protected:
33   void                   ExecOnce();
34   Bool_t                 Run();
35
36   void                   SimulateTracks();
37   Bool_t                 DiceEfficiency(AliPicoTrack *vp, Double_t eff[3], Double_t rnd);
38   AliPicoTrack          *SmearPt(AliPicoTrack *vp, Double_t eff[3], Double_t rnd);
39   Double_t               GetMomentumSmearing(Int_t cat, Double_t pt);
40   void                   FitMomentumResolution();
41   void                   LoadTrEfficiencyRootFileFromOADB();
42   void                   LoadTrPtResolutionRootFileFromOADB();
43   void                   SetMomentumResolutionHybrid(TProfile *p1, TProfile *p2, TProfile *p3);
44   void                   SetEfficiencyHybrid(TH1 *h1, TH1 *h2, TH1 *h3);
45
46   TString                fTracksOutName;       // name of output track collection
47   TClonesArray          *fTracksOut;           //!output track collection
48   Int_t                  fNTrackClasses;       // number of track classes
49   TRandom3 *fRandom;                           //! random number generator
50   Double_t  fEfficiencyFixed;                  // fixed efficiency for all pT and all types of tracks
51   TProfile *fMomResH1;                         // Momentum resolution from TrackQA Hybrid Category 1
52   TProfile *fMomResH2;                         // Momentum resolution from TrackQA Hybrid Category 2
53   TProfile *fMomResH3;                         // Momentum resolution from TrackQA Hybrid Category 3
54   TF1      *fMomResH1Fit;                      // fit to momentum resolution
55   TF1      *fMomResH2Fit;                      // fit to momentum resolution
56   TF1      *fMomResH3Fit;                      // fit to momentum resolution
57   TH1      *fhEffH1;                           // Efficiency for Spectra Hybrid Category 1
58   TH1      *fhEffH2;                           // Efficiency for Spectra Hybrid Category 2
59   TH1      *fhEffH3;                           // Efficiency for Spectra Hybrid Category 3
60   Bool_t    fUseTrPtResolutionSmearing;        // Apply momentum smearing on track level
61   Int_t     fUseDiceEfficiency;                // Flag to apply efficiency on track level by dicing 0: no dicing; 1: dicing wrt to input branch;
62   Double_t  fDiceEfficiencyMinPt;              // Only do efficiency dicing for tracks above this pt
63   Bool_t    fUseTrPtResolutionFromOADB;        // Load track pt resolution root file from OADB path
64   Bool_t    fUseTrEfficiencyFromOADB;          // Load tracking efficiency root file from OADB path
65   TString   fPathTrPtResolution;               // OADB path to root file
66   TString   fPathTrEfficiency;                 // OADB path to root file
67
68   //Output objects
69   TH1F     *fHistPtDet;                        //!pT spectrum of detector level particles
70   TH2F     *fh2PtGenPtSmeared;                 //! Control histo smeared momentum
71   TProfile *fp1Efficiency;                     //! Control profile efficiency
72   TProfile *fp1PtResolution;                   //! Control profile for pT resolution
73
74   
75  private:
76   AliJetFastSimulation(const AliJetFastSimulation&);            // not implemented
77   AliJetFastSimulation &operator=(const AliJetFastSimulation&); // not implemented
78
79   ClassDef(AliJetFastSimulation, 1) // Jet fast simulation task
80 };
81 #endif