#include "TH2.h"
#include "TH3.h"
+#include "TProfile.h"
#include "TMath.h"
#include "TRandom3.h"
#include "TLorentzVector.h"
fCollTemplates(),
fInitialized(kFALSE),
fEfficiencyFixed(1.),
- fhEfficiency(0)
+ fhEfficiency(0),
+ fpAppliedEfficiency(0)
{
// Dummy constructor.
fCollTemplates.SetOwner(kTRUE);
fCollTemplates(),
fInitialized(kFALSE),
fEfficiencyFixed(1.),
- fhEfficiency(0)
+ fhEfficiency(0),
+ fpAppliedEfficiency(0)
{
// Default constructor.
fCollTemplates.SetOwner(kTRUE);
+
+ const Int_t nBinPt = 118; //0-2: 20 bins; 2-100: 98 bins
+ Double_t binLimitsPt[nBinPt+1];
+ for(Int_t iPt = 0;iPt <= nBinPt;iPt++){
+ if(iPt<20){
+ binLimitsPt[iPt] = 0. + (Double_t)iPt*0.15;
+ } else {// 1.0
+ binLimitsPt[iPt] = binLimitsPt[iPt-1] + 1.0;
+ }
+ }
+ fpAppliedEfficiency = new TProfile("fpAppliedEfficiency","fpAppliedEfficiency",nBinPt,binLimitsPt);
}
//__________________________________________________________________________
fCollTemplates(other.fCollTemplates),
fInitialized(other.fInitialized),
fEfficiencyFixed(other.fEfficiencyFixed),
- fhEfficiency(other.fhEfficiency)
+ fhEfficiency(other.fhEfficiency),
+ fpAppliedEfficiency(other.fpAppliedEfficiency)
{
// Copy constructor.
}
fInitialized = other.fInitialized;
fEfficiencyFixed = other.fEfficiencyFixed;
fhEfficiency = other.fhEfficiency;
+ fpAppliedEfficiency= other.fpAppliedEfficiency;
return *this;
}
Double_t meanPt = GetMeanPtConstituents(jet,fTracks);
Double_t eff = GetEfficiency(meanPt);
+ fpAppliedEfficiency->Fill(meanPt,eff);
Int_t np = TMath::FloorNint((double)jet->GetNumberOfTracks() * (1./eff -1.));
-
+
TLorentzVector corrVec; corrVec.SetPtEtaPhiM(jet->Pt(),jet->Eta(),jet->Phi(),jet->M());
Double_t mass = 0.13957; //pion mass
#include <TClonesArray.h>
class TH3;
+class TProfile;
class AliEmcalJet;
class AliEmcalJetByJetCorrection : public TNamed
void SetTemplate(TH3 *h) { fh3JetPtDRTrackPt = h; }
void SetJetPtBinWidth(Double_t w) { fBinWidthJetPt = w; }
- void SetJetPtRange(Double_t min, Double_t max) {fJetPtMin = min; fJetPtMax = max;};
+ void SetJetPtRange(Double_t min, Double_t max) {fJetPtMin = min; fJetPtMax = max;}
void SetFixedTrackEfficiency(Double_t eff) { fEfficiencyFixed = eff; }
void SetEfficiencyHist(TH1 *h) { fhEfficiency = h ; }
Double_t GetEfficiency(const Double_t pt) const;
Double_t GetMeanPtConstituents(const AliEmcalJet *jet, TClonesArray *fTracks) const;
+ TProfile *GetAppliedEfficiency() const {return fpAppliedEfficiency;}
+
void Init();
AliEmcalJet *Eval(const AliEmcalJet *jet, TClonesArray *fTracks);
Bool_t fInitialized; // status of initialization
Double_t fEfficiencyFixed; // fixed efficiency for all pT and all types of tracks
TH1 *fhEfficiency; // single particle efficiency
- private:
- ClassDef(AliEmcalJetByJetCorrection, 1) // jet-by-jet correction class
+ //book-keeping object filled inside Eval()
+ TProfile *fpAppliedEfficiency; // Control profile efficiency
+
+ private:
+ ClassDef(AliEmcalJetByJetCorrection, 2) // jet-by-jet correction class
};
#endif
fh2PtMassCorr(0),
fhnMassResponse(0),
fhnMassResponseCorr(0),
- fh3JetPtDRTrackPt(0)
+ fh3JetPtDRTrackPt(0),
+ fpUsedEfficiency(0)
{
// Default constructor.
fh2PtMassCorr(0),
fhnMassResponse(0),
fhnMassResponseCorr(0),
- fh3JetPtDRTrackPt(0)
+ fh3JetPtDRTrackPt(0),
+ fpUsedEfficiency(0)
{
// Standard constructor.
fhnMassResponseCorr = new THnSparseF(histName.Data(),histTitle.Data(),nBinsSparse0,nBins0,xmin0,xmax0);
fOutput->Add(fhnMassResponseCorr);
+ if(fEJetByJetCorr) fpUsedEfficiency = fEJetByJetCorr->GetAppliedEfficiency();
+ fOutput->Add(fpUsedEfficiency);
+
TH1::AddDirectory(oldStatus);
PostData(1, fOutput); // Post data for ALL output slots > 0 here.
curVec.SetPtEtaPhiM(vp->Pt(),vp->Eta(),vp->Phi(),vp->M());
sumVec+=curVec;
corrVec+=curVec;
- // Printf("%d %f",i,dr[indexes[i]]);
+
fh3PtDRMass[fCentBin]->Fill(ptJet1,dr[indexes[i]],sumVec.M()/mJet1);
fh3PtDRRho[fCentBin]->Fill(ptJet1,dr[indexes[i]],sumVec.Pt()/ptJet1);
class TH1;
class TH2;
class TH3;
-class TProfile2D;
+class TProfile;
class THnSparse;
class TClonesArray;
class TArrayI;
TH2F **fh2PtMassCorr; //! jet pT vs mass corrected
THnSparse *fhnMassResponse; //! response matrix
THnSparse *fhnMassResponseCorr; //! response matrix corrected
-
TH3F **fh3JetPtDRTrackPt; //! jet pt vs dr(jet axis, constituent) vs pT,track
+ TProfile *fpUsedEfficiency; //! efficiency used for correction
private:
AliAnalysisTaskEmcalJetMassStructure(const AliAnalysisTaskEmcalJetMassStructure&); // not implemented
AliAnalysisTaskEmcalJetMassStructure &operator=(const AliAnalysisTaskEmcalJetMassStructure&); // not implemented
- ClassDef(AliAnalysisTaskEmcalJetMassStructure, 2)
+ ClassDef(AliAnalysisTaskEmcalJetMassStructure, 3)
};
#endif