10 #include <TClonesArray.h>
12 #include <TLorentzVector.h>
13 #include <TParticle.h>
14 #include <TParticlePDG.h>
20 #include "AliAnalysisManager.h"
21 #include "AliEMCALDigit.h"
22 #include "AliEMCALGeometry.h"
23 #include "AliEMCALRecPoint.h"
24 #include "AliGenerator.h"
25 #include "AliHeader.h"
29 #include "AliRunLoader.h"
32 #include "AliVCluster.h"
33 #include "AliVEvent.h"
44 fEfficiencyFixed(1.1),
54 fUseTrPtResolutionSmearing(kFALSE),
55 fUseDiceEfficiency(kFALSE),
56 fDiceEfficiencyMinPt(-1.),
58 fUseTrPtResolutionFromOADB(kFALSE),
59 fUseTrEfficiencyFromOADB(kFALSE),
60 fPathTrPtResolution(""),
61 fPathTrEfficiency(""),
68 SetMakeGeneralHistograms(kTRUE);
78 fEfficiencyFixed(1.1),
88 fUseTrPtResolutionSmearing(kFALSE),
89 fUseDiceEfficiency(kFALSE),
90 fDiceEfficiencyMinPt(-1.),
92 fUseTrPtResolutionFromOADB(kFALSE),
93 fUseTrEfficiencyFromOADB(kFALSE),
94 fPathTrPtResolution(
""),
95 fPathTrEfficiency(
""),
123 fTracksOut =
new TClonesArray(
"AliPicoTrack");
126 AliFatal(Form(
"%s: Collection %s is already present in the event!", GetName(),
fTracksOutName.Data()));
147 const Int_t nBinPt = 100;
149 for(
Int_t iPt = 0;iPt <= nBinPt;iPt++){
151 binLimitsPt[iPt] = 0.0;
153 binLimitsPt[iPt] = binLimitsPt[iPt-1] + 1.0;
157 fHistPtDet =
new TH1F(
"fHistpt",
"fHistPtDet;#it{p}_{T};N",nBinPt,binLimitsPt);
160 fh2PtGenPtSmeared =
new TH2F(
"fh2PtGenPtSmeared",
"fh2PtGenPtSmeared",nBinPt,binLimitsPt,nBinPt,binLimitsPt);
163 fp1Efficiency =
new TProfile(
"fp1Efficiency",
"fp1Efficiency",nBinPt,binLimitsPt);
166 fp1PtResolution =
new TProfile(
"fp1PtResolution",
"fp1PtResolution",nBinPt,binLimitsPt);
206 for (
Int_t i = 0; i < nTracks; ++i) {
215 if(!accept)
continue;
219 track =
SmearPt(picotrack,eff,rnd);
220 (*fTracksOut)[it] = track;
222 track =
new ((*fTracksOut)[it])
AliPicoTrack(*picotrack);
224 track->SetBit(TObject::kBitMask,1);
243 if(pT>10.) pTtmp = 10.;
248 sumEff = eff[0]+eff[1]+eff[2];
266 TMath::Sort(3,eff,cat);
269 else if(rnd<=(eff[cat[2]]+eff[cat[1]]))
301 TProfile *fMomRes = 0x0;
316 Int_t bin = fMomRes->FindBin(pt);
317 smear =
fRandom->Gaus(fMomRes->GetBinContent(bin),fMomRes->GetBinError(bin));
320 if(fMomRes)
delete fMomRes;
329 AliInfo(
"Trying to connect to AliEn ...");
330 TGrid::Connect(
"alien://");
335 TProfile *fProfPtPtSigma1PtGlobSt = NULL;
336 TProfile *fProfPtPtSigma1PtGlobCnoSPD = NULL;
337 TProfile *fProfPtPtSigma1PtGlobCnoITS = NULL;
338 if(
fNTrackClasses>0) fProfPtPtSigma1PtGlobSt = (TProfile*)f->Get(
"fProfPtPtSigma1PtGlobSt");
339 if(
fNTrackClasses>1) fProfPtPtSigma1PtGlobCnoSPD = (TProfile*)f->Get(
"fProfPtPtSigma1PtGlobCnoSPD");
340 if(
fNTrackClasses>2) fProfPtPtSigma1PtGlobCnoITS = (TProfile*)f->Get(
"fProfPtPtSigma1PtGlobCnoITS");
350 AliInfo(
"Trying to connect to AliEn ...");
351 TGrid::Connect(
"alien://");
356 TH1D *hEffPosGlobSt = NULL;
357 TH1D *hEffPosGlobCnoSPD = NULL;
358 TH1D *hEffPosGlobCnoITS = NULL;
398 fMomResH1Fit =
new TF1(
"fMomResH1Fit",
"[0]+[1]*x",0.,200.);
404 fMomResH2Fit =
new TF1(
"fMomResH2Fit",
"[0]+[1]*x",0.,200.);
410 fMomResH3Fit =
new TF1(
"fMomResH3Fit",
"[0]+[1]*x",0.,200.);
Double_t GetTrackPhiOnEMCal() const
Bool_t DiceEfficiency(AliPicoTrack *vp, Double_t eff[3], Double_t rnd)
Int_t fNTrackClasses
output track collection
TString fPathTrEfficiency
void SetDiceEfficiency(Int_t b)
Base task in the EMCAL framework.
virtual void UserCreateOutputObjects()
Double_t GetTrackPtOnEMCal() const
TClonesArray * fTracksOut
Double_t fEfficiencyFixed
random number generator
Bool_t fUseTrPtResolutionSmearing
void SetEfficiencyHybrid(TH1 *h1, TH1 *h2, TH1 *h3)
TProfile * fp1Efficiency
Control histo smeared momentum.
Double_t fUncertEfficiency
TH2F * fh2PtGenPtSmeared
pT spectrum of detector level particles
AliPicoTrack * SmearPt(AliPicoTrack *vp, Double_t eff[3], Double_t rnd)
void FitMomentumResolution()
void LoadTrEfficiencyRootFileFromOADB()
void SetMomentumResolutionHybrid(TProfile *p1, TProfile *p2, TProfile *p3)
Byte_t GetTrackType() const
Double_t fDiceEfficiencyMinPt
AliEmcalList * fOutput
!output list
TClonesArray * fTracks
!tracks
Bool_t Run()
Run function. This is the core function of the analysis and contains the user code. Therefore users have to implement this function.
void SetMakeGeneralHistograms(Bool_t g)
void LoadTrPtResolutionRootFileFromOADB()
virtual void ExecOnce()
Perform steps needed to initialize the analysis.
Double_t GetMomentumSmearing(Int_t cat, Double_t pt)
Bool_t fUseTrEfficiencyFromOADB
void ExecOnce()
Perform steps needed to initialize the analysis.
void SetSmearResolution(Bool_t b)
void UserCreateOutputObjects()
Main initialization function on the worker.
Double_t GetTrackEtaOnEMCal() const
TProfile * fp1PtResolution
Control profile efficiency.
TString fPathTrPtResolution
Bool_t fUseTrPtResolutionFromOADB
virtual ~AliJetFastSimulation()