25 #include <TClonesArray.h>
31 #include <TDatabasePDG.h>
33 #include "AliAnalysisManager.h"
34 #include "AliAODHandler.h"
35 #include "AliAODEvent.h"
36 #include "AliAODVertex.h"
37 #include "AliAODTrack.h"
38 #include "AliAODMCHeader.h"
39 #include "AliAODMCParticle.h"
43 #include "AliAnalysisTaskSE.h"
64 fWriteOnlySignal(kFALSE),
65 fDoCutVarHistos(kTRUE),
66 fUseSelectionBit(kFALSE),
76 for(Int_t i=0;i<3;i++){
80 for(Int_t i=0;i<4;i++) {
105 for(Int_t i=0;i<kMaxPtBins+1;i++){
113 AliAnalysisTaskSE(name),
122 fFillNtuple(fillNtuple),
124 fWriteOnlySignal(kFALSE),
125 fDoCutVarHistos(kTRUE),
126 fUseSelectionBit(kFALSE),
132 fAnalysisCuts(analysiscuts)
137 for(Int_t i=0;i<3;i++){
141 for(Int_t i=0;i<4;i++) {
166 for(Int_t i=0;i<kMaxPtBins+1;i++){
174 DefineOutput(1,TList::Class());
176 DefineOutput(2,TList::Class());
178 DefineOutput(3,AliNormalizationCounter::Class());
182 DefineOutput(4,TNtuple::Class());
191 printf(
"Max. number of Pt bins = %d\n",
kMaxPtBins);
205 printf(
"Number of Pt bins = %d\n",
fNPtBins);
215 for(Int_t i=0;i<4;i++){
245 for(Int_t i=0;i<3;i++){
263 if(fDebug > 1) printf(
"AnalysisTaskSEDs::Init() \n");
270 analysis->SetName(
"AnalysisCuts");
282 if(fDebug > 1) printf(
"AnalysisTaskSEDs::UserCreateOutputObjects() \n");
287 fOutput->SetName(
"OutputHistos");
289 fHistNEvents =
new TH1F(
"hNEvents",
"number of events ",11,-0.5,10.5);
291 fHistNEvents->GetXaxis()->SetBinLabel(2,
"n. passing IsEvSelected");
292 fHistNEvents->GetXaxis()->SetBinLabel(3,
"n. rejected due to trigger");
293 fHistNEvents->GetXaxis()->SetBinLabel(4,
"n. rejected due to not reco vertex");
294 fHistNEvents->GetXaxis()->SetBinLabel(5,
"n. rejected for contr vertex");
295 fHistNEvents->GetXaxis()->SetBinLabel(6,
"n. rejected for vertex out of accept");
296 fHistNEvents->GetXaxis()->SetBinLabel(7,
"n. rejected for pileup events");
297 fHistNEvents->GetXaxis()->SetBinLabel(8,
"no. of out centrality events");
298 fHistNEvents->GetXaxis()->SetBinLabel(9,
"no. of 3 prong candidates");
299 fHistNEvents->GetXaxis()->SetBinLabel(10,
"no. of Ds after filtering cuts");
300 fHistNEvents->GetXaxis()->SetBinLabel(11,
"no. of Ds after selection cuts");
309 fHistCentrality[1]=
new TH1F(
"hCentr(selectedCent)",
"centrality(selectedCent)",10000,0.,100.);
310 fHistCentrality[2]=
new TH1F(
"hCentr(OutofCent)",
"centrality(OutofCent)",10000,0.,100.);
311 fHistCentralityMult[0]=
new TH2F(
"hCentrMult",
"centrality vs mult",100,0.5,30000.5,40,0.,100.);
312 fHistCentralityMult[1]=
new TH2F(
"hCentrMult(selectedCent)",
"centrality vs mult(selectedCent)",100,0.5,30000.5,40,0.,100.);
313 fHistCentralityMult[2]=
new TH2F(
"hCentrMult(OutofCent)",
"centrality vs mult(OutofCent)",100,0.5,30000.5,40,0.,100.);
314 for(Int_t i=0;i<3;i++){
321 Double_t massDs=TDatabasePDG::Instance()->GetParticle(431)->Mass();
324 if(nInvMassBins%2==1) nInvMassBins++;
333 for(Int_t iType=0; iType<4; iType++){
348 hisname.Form(
"hMass%sPt%d",htype.Data(),i);
351 hisname.Form(
"hMass%sPt%dphi",htype.Data(),i);
354 hisname.Form(
"hMass%sPt%dk0st",htype.Data(),i);
357 hisname.Form(
"hCosP%sPt%d",htype.Data(),i);
358 fCosPHist[index]=
new TH1F(hisname.Data(),hisname.Data(),100,0.5,1.);
360 hisname.Form(
"hDLen%sPt%d",htype.Data(),i);
361 fDLenHist[index]=
new TH1F(hisname.Data(),hisname.Data(),100,0.,0.5);
363 hisname.Form(
"hSumd02%sPt%d",htype.Data(),i);
364 fSumd02Hist[index]=
new TH1F(hisname.Data(),hisname.Data(),100,0.,1.);
366 hisname.Form(
"hSigVert%sPt%d",htype.Data(),i);
367 fSigVertHist[index]=
new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
369 hisname.Form(
"hPtMax%sPt%d",htype.Data(),i);
370 fPtMaxHist[index]=
new TH1F(hisname.Data(),hisname.Data(),100,0.5,20.);
372 hisname.Form(
"hPtCand%sPt%d",htype.Data(),i);
373 fPtCandHist[index]=
new TH1F(hisname.Data(),hisname.Data(),100,0.5,20.);
375 hisname.Form(
"hDCA%sPt%d",htype.Data(),i);
376 fDCAHist[index]=
new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
378 hisname.Form(
"hPtProng0%sPt%d",htype.Data(),i);
379 fPtProng0Hist[index]=
new TH1F(hisname.Data(),hisname.Data(),100,0.0,20.);
381 hisname.Form(
"hPtProng1%sPt%d",htype.Data(),i);
382 fPtProng1Hist[index]=
new TH1F(hisname.Data(),hisname.Data(),100,0.0,20.);
384 hisname.Form(
"hPtProng2%sPt%d",htype.Data(),i);
385 fPtProng2Hist[index]=
new TH1F(hisname.Data(),hisname.Data(),100,0.0,20.);
387 hisname.Form(
"hDalitz%sPt%d",htype.Data(),i);
388 fDalitz[index]=
new TH2F(hisname.Data(),hisname.Data(),100,0.,2.,100,0.,2.);
390 hisname.Form(
"hDalitz%sPt%dphi",htype.Data(),i);
391 fDalitzPhi[index]=
new TH2F(hisname.Data(),hisname.Data(),100,0.,2.,100,0.,2.);
393 hisname.Form(
"hDalitz%sPt%dk0st",htype.Data(),i);
394 fDalitzK0st[index]=
new TH2F(hisname.Data(),hisname.Data(),100,0.,2.,100,0.,2.);
420 fChanHist[0] =
new TH1F(
"hChanAll",
"KKpi and piKK candidates",64,-0.5,63.5);
421 fChanHist[1] =
new TH1F(
"hChanSig",
"KKpi and piKK candidates",64,-0.5,63.5);
422 fChanHist[2] =
new TH1F(
"hChanBkg",
"KKpi and piKK candidates",64,-0.5,63.5);
423 fChanHist[3] =
new TH1F(
"hChanReflSig",
"KKpi and piKK candidates",64,-0.5,63.5);
424 for(Int_t i=0;i<4;i++){
431 fPtVsMass=
new TH2F(
"hPtVsMass",
"PtVsMass (prod. cuts)",nInvMassBins,minMass,maxMass,40,0.,20.);
432 fPtVsMassPhi=
new TH2F(
"hPtVsMassPhi",
"PtVsMass (phi selection)",nInvMassBins,minMass,maxMass,200,0.,20.);
433 fPtVsMassK0st=
new TH2F(
"hPtVsMassK0st",
"PtVsMass (K0* selection)",nInvMassBins,minMass,maxMass,200,0.,20.);
434 fYVsPt=
new TH2F(
"hYVsPt",
"YvsPt (prod. cuts)",40,0.,20.,80,-2.,2.);
435 fYVsPtSig=
new TH2F(
"hYVsPtSig",
"YvsPt (MC, only sig., prod. cuts)",40,0.,20.,80,-2.,2.);
438 hisname.Form(
"hMassKKPt%d",i);
439 fMassHistKK[i]=
new TH1F(hisname.Data(),hisname.Data(),200,0.95,1.35);
442 hisname.Form(
"hMassKpiPt%d",i);
443 fMassHistKpi[i]=
new TH1F(hisname.Data(),hisname.Data(),200,0.7,1.1);
464 fNtupleDs =
new TNtuple(
"fNtupleDs",
"Ds",
"labDs:retcode:pdgcode0:Pt0:Pt1:Pt2:PtRec:P0:P1:P2:PidTrackBit0:PidTrackBit1:PidTrackBit2:PointingAngle:PointingAngleXY:DecLeng:DecLengXY:NorDecLeng:NorDecLengXY:InvMassKKpi:InvMasspiKK:sigvert:d00:d01:d02:dca:d0square:InvMassPhiKKpi:InvMassPhipiKK:InvMassK0starKKpi:InvMassK0starpiKK:cosinePiDsFrameKKpi:cosinePiDsFramepiKK:cosineKPhiFrameKKpi:cosineKPhiFramepiKK:centrality:runNumber");
478 AliAODEvent *aod =
dynamic_cast<AliAODEvent*
> (InputEvent());
480 TClonesArray *array3Prong = 0;
481 if(!aod && AODEvent() && IsStandardAOD()) {
484 aod =
dynamic_cast<AliAODEvent*
> (AODEvent());
487 AliAODHandler* aodHandler = (AliAODHandler*)
488 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
489 if(aodHandler->GetExtensions()) {
490 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
491 AliAODEvent *aodFromExt = ext->GetAOD();
492 array3Prong=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Charm3Prong");
495 array3Prong=(TClonesArray*)aod->GetList()->FindObject(
"Charm3Prong");
498 if(!aod || !array3Prong) {
499 printf(
"AliAnalysisTaskSEDs::UserExec: Charm3Prong branch not found!\n");
506 if(!aod->GetPrimaryVertex() || TMath::Abs(aod->GetMagneticField())<0.001)
return;
517 Float_t ntracks=aod->GetNumberOfTracks();
534 Int_t runNumber=aod->GetRunNumber();
542 TClonesArray *arrayMC=0;
543 AliAODMCHeader *mcHeader=0;
546 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
552 arrayMC = (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
554 printf(
"AliAnalysisTaskSEDs::UserExec: MC particles branch not found!\n");
559 mcHeader = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
561 printf(
"AliAnalysisTaskSEDs::UserExec: MC header branch not found!\n");
566 Int_t n3Prong = array3Prong->GetEntriesFast();
567 if(fDebug>1) printf(
"Number of Ds->KKpi: %d\n",n3Prong);
570 Int_t pdgDstoKKpi[3]={321,321,211};
573 for (Int_t i3Prong = 0; i3Prong < n3Prong; i3Prong++) {
584 Bool_t unsetvtx=kFALSE;
590 Bool_t recVtx=kFALSE;
591 AliAODVertex *origownvtx=0x0;
594 Double_t ptCand = d->Pt();
596 Double_t rapid=d->
YDs();
597 fYVsPt->Fill(ptCand,rapid);
599 if(!isFidAcc)
continue;
602 Int_t retCodeNoRes=retCodeAnalysisCuts;
610 Double_t massKK=d->InvMass2Prongs(0,1,321,321);
611 Double_t massKp=d->InvMass2Prongs(1,2,321,211);
616 Double_t massKK=d->InvMass2Prongs(1,2,321,321);
617 Double_t massKp=d->InvMass2Prongs(0,1,211,321);
622 if(retCodeAnalysisCuts<=0)
continue;
637 Int_t isKKpi=retCodeAnalysisCuts&1;
638 Int_t ispiKK=retCodeAnalysisCuts&2;
639 Int_t isPhiKKpi=retCodeAnalysisCuts&4;
640 Int_t isPhipiKK=retCodeAnalysisCuts&8;
641 Int_t isK0starKKpi=retCodeAnalysisCuts&16;
642 Int_t isK0starpiKK=retCodeAnalysisCuts&32;
644 Double_t weightKKpi=1.;
645 Double_t weightpiKK=1.;
649 if(weightKKpi>1. || weightKKpi<0.) weightKKpi=0.;
650 if(weightpiKK>1. || weightpiKK<0.) weightpiKK=0.;
655 Int_t indexMCKKpi=-1;
656 Int_t indexMCpiKK=-1;
662 labDs = d->MatchToMC(431,arrayMC,3,pdgDstoKKpi);
664 Int_t labDau0=((AliAODTrack*)d->GetDaughter(0))->GetLabel();
665 AliAODMCParticle* p=(AliAODMCParticle*)arrayMC->UncheckedAt(TMath::Abs(labDau0));
666 pdgCode0=TMath::Abs(p->GetPdgCode());
701 fMassHist[index]->Fill(invMass,weightKKpi);
702 fPtVsMass->Fill(invMass,ptCand,weightKKpi);
711 if(
fReadMC && indexMCKKpi!=-1){
712 fMassHist[indexMCKKpi]->Fill(invMass,weightKKpi);
713 if(isPhiKKpi)
fMassHistPhi[indexMCKKpi]->Fill(invMass,weightKKpi);
714 if(isK0starKKpi)
fMassHistK0st[indexMCKKpi]->Fill(invMass,weightKKpi);
719 fMassHist[index]->Fill(invMass,weightpiKK);
720 fPtVsMass->Fill(invMass,ptCand,weightpiKK);
729 if(
fReadMC && indexMCpiKK!=-1){
730 fMassHist[indexMCpiKK]->Fill(invMass,weightpiKK);
731 if(isPhipiKK)
fMassHistPhi[indexMCpiKK]->Fill(invMass,weightpiKK);
732 if(isK0starpiKK)
fMassHistK0st[indexMCpiKK]->Fill(invMass,weightpiKK);
739 Double_t pt0=d->PtProng(0);
740 Double_t pt1=d->PtProng(1);
741 Double_t pt2=d->PtProng(2);
743 Double_t sumD02=d->Getd0Prong(0)*d->Getd0Prong(0)+d->Getd0Prong(1)*d->Getd0Prong(1)+d->Getd0Prong(2)*d->Getd0Prong(2);
744 Double_t dca=d->GetDCA();
746 for(Int_t i=0;i<3;i++){
747 if(d->PtProng(i)>
ptmax)ptmax=d->PtProng(i);
759 Double_t massKK=d->InvMass2Prongs(0,1,321,321);
760 Double_t massKp=d->InvMass2Prongs(1,2,321,211);
761 fDalitz[index]->Fill(massKK,massKp);
762 if(isPhiKKpi)
fDalitzPhi[index]->Fill(massKK,massKp);
763 if(isK0starKKpi)
fDalitzK0st[index]->Fill(massKK,massKp);
764 if(
fReadMC && indexMCKKpi!=-1){
765 fDalitz[indexMCKKpi]->Fill(massKK,massKp);
766 if(isPhiKKpi)
fDalitzPhi[indexMCKKpi]->Fill(massKK,massKp);
767 if(isK0starKKpi)
fDalitzK0st[indexMCKKpi]->Fill(massKK,massKp);
781 Double_t massKK=d->InvMass2Prongs(1,2,321,321);
782 Double_t massKp=d->InvMass2Prongs(0,1,211,321);
783 fDalitz[index]->Fill(massKK,massKp);
784 if(isPhipiKK)
fDalitzPhi[index]->Fill(massKK,massKp);
785 if(isK0starpiKK)
fDalitzK0st[index]->Fill(massKK,massKp);
788 if(
fReadMC && indexMCpiKK!=-1){
789 fDalitz[indexMCpiKK]->Fill(massKK,massKp);
790 if(isPhipiKK)
fDalitzPhi[indexMCpiKK]->Fill(massKK,massKp);
791 if(isK0starpiKK)
fDalitzK0st[indexMCpiKK]->Fill(massKK,massKp);
813 AliAODTrack *track0=(AliAODTrack*)d->GetDaughter(0);
814 AliAODTrack *track1=(AliAODTrack*)d->GetDaughter(1);
815 AliAODTrack *track2=(AliAODTrack*)d->GetDaughter(2);
821 tmp[0]=Float_t(labDs);
823 tmp[1]=Float_t(retCodeAnalysisCuts);
824 tmp[2]=Float_t(pdgCode0);
825 tmp[3]=d->PtProng(0);
826 tmp[4]=d->PtProng(1);
827 tmp[5]=d->PtProng(2);
832 tmp[10]=Int_t(BitMapPIDTrack0);
833 tmp[11]=Int_t(BitMapPIDTrack1);
834 tmp[12]=Int_t(BitMapPIDTrack2);
844 tmp[22]=d->Getd0Prong(0);
845 tmp[23]=d->Getd0Prong(1);
846 tmp[24]=d->Getd0Prong(2);
848 tmp[26]=d->Getd0Prong(0)*d->Getd0Prong(0)+d->Getd0Prong(1)*d->Getd0Prong(1)+d->Getd0Prong(2)*d->Getd0Prong(2);
849 tmp[27]=d->InvMass2Prongs(0,1,321,321);
850 tmp[28]=d->InvMass2Prongs(1,2,321,321);
851 tmp[29]=d->InvMass2Prongs(1,2,321,211);
852 tmp[30]=d->InvMass2Prongs(0,1,211,321);
857 tmp[35]=(Float_t)(centrality);
858 tmp[36]=(Float_t)(runNumber);
888 if(fDebug > 1) printf(
"AnalysisTaskSEDs: Terminate() \n");
889 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
891 printf(
"ERROR: fOutput not available\n");
896 printf(
"Number of analyzed events = %d\n",(Int_t)
fHistNEvents->GetBinContent(2));
898 printf(
"ERROR: fHistNEvents not available\n");
Double_t NormalizedDecayLengthXY() const
Bool_t IsEventRejectedDueToCentrality() const
TH1F * fPtMaxHist[4 *kMaxPtBins]
! hist. for Pt Max (Prod Cuts)
Bool_t IsEventRejectedDueToZVertexOutsideFiducialRegion() const
Double_t NormalizedDecayLength() const
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
Bool_t IsEventRejectedDueToNotRecoVertex() const
Double_t InvMassDsKKpi() const
void StoreCandidates(AliVEvent *, Int_t nCand=0, Bool_t flagFilter=kTRUE)
TH1F * fPtProng1Hist[4 *kMaxPtBins]
! hist. for DCA (Prod Cuts)
Double_t InvMassDspiKK() const
void SetPtBins(Int_t n, Float_t *lim)
Bool_t HasSelectionBit(Int_t i) const
TH2F * fDalitzK0st[4 *kMaxPtBins]
! dalitz plot via K0* (sig,bkg,tot)
void UnsetOwnPrimaryVtx()
Double_t CosPiDsLabFrameKKpi() const
Int_t GetHistoIndex(Int_t iPtBin) const
Double_t fMassRange
limits for pt bins
Bool_t IsEventRejectedDueToVertexContributors() const
TH2F * fPtVsMass
! hist. of pt vs. mass (prod. cuts)
Double_t CosPointingAngleXY() const
TH1F * fPtProng0Hist[4 *kMaxPtBins]
! hist. for Pt Max (Prod Cuts)
TH2F * fYVsPtSig
! hist. of Y vs. Pt (MC, only sig, prod. cuts)
Int_t GetPidOption() const
virtual void UserCreateOutputObjects()
Implementation of interface methods.
virtual Bool_t IsInFiducialAcceptance(Double_t pt, Double_t y) const
TH1F * fSumd02Hist[4 *kMaxPtBins]
! hist. for sum d02 (Prod Cuts)
UInt_t GetPIDTrackTPCTOFBitMap(AliAODTrack *track) const
TH1F * fMassHistPhi[4 *kMaxPtBins]
! hist. of mass spectra via phi (sig,bkg,tot)
TNtuple * fNtupleDs
! output ntuple
virtual ~AliAnalysisTaskSEDs()
TH1F * fHistCentrality[3]
!hist. for cent distr (all,sel ev, )
AliNormalizationCounter * fCounter
bin size for inv. mass histo
TH2F * fHistCentralityMult[3]
!hist. for cent distr vs mult (all,sel ev, )
TH1F * fHistNEvents
! hist. for No. of events
AliRDHFCutsDstoKKpi * fAnalysisCuts
TList * fOutput
! list send on output slot 0
Double_t CosPiKPhiRFrameKKpi() const
AliAODVertex * GetOwnPrimaryVtx() const
virtual Int_t IsSelected(TObject *obj, Int_t selectionLevel)
Double_t GetSigmaVert(const AliAODEvent *aod=0x0)
TH2F * fDalitzPhi[4 *kMaxPtBins]
! dalitz plot via phi (sig,bkg,tot)
Float_t GetCentrality(AliAODEvent *aodEvent)
Bool_t IsEventRejectedDueToPileup() const
TH1F * fMassHistKpi[kMaxPtBins]
! hist. of mass spectra of Kpi
Bool_t IsCutOnResonancesApplied() const
TH1F * fPtCandHist[4 *kMaxPtBins]
! hist. for Pt Max (Prod Cuts)
void SetOwnPrimaryVtx(const AliAODVertex *vtx)
Double_t CosPiDsLabFramepiKK() const
Double_t DecayLengthXY() const
Bool_t GetIsPrimaryWithoutDaughters() const
Int_t GetSignalHistoIndex(Int_t iPtBin) const
Bool_t IsEventSelected(AliVEvent *event)
virtual void UserExec(Option_t *option)
Int_t GetReflSignalHistoIndex(Int_t iPtBin) const
virtual void Terminate(Option_t *option)
TH1F * fCosPHist[4 *kMaxPtBins]
! hist. of cos pointing angle (sig,bkg,tot)
void CleanOwnPrimaryVtx(AliAODRecoDecayHF *d, AliAODEvent *aod, AliAODVertex *origownvtx) const
Float_t * GetPtBinLimits() const
TH1F * fDLenHist[4 *kMaxPtBins]
! hist. of decay length (sig,bkg,tot)
Bool_t fUseSelectionBit
flag to create and fill histos with distributions of cut variables
Double_t GetWeightForpiKK() const
Double_t GetWeightForKKpi() const
TH1F * fChanHist[4]
! hist. with KKpi and piKK candidates (sig,bkg,tot)
TH1F * fMassHist[4 *kMaxPtBins]
! hist. of mass spectra (sig,bkg,tot)
TH1F * fDCAHist[4 *kMaxPtBins]
! hist. for DCA (Prod Cuts)
Bool_t IsEventRejectedDueToTrigger() const
Bool_t fDoCutVarHistos
flag to control ntuple writing in MC
TH1F * fPtProng2Hist[4 *kMaxPtBins]
! hist. for DCA (Prod Cuts)
void StoreEvent(AliVEvent *, AliRDHFCuts *, Bool_t mc=kFALSE, Int_t multiplicity=-9999)
Double_t CosPointingAngle() const
TH2F * fDalitz[4 *kMaxPtBins]
! dalitz plot (sig,bkg,tot)
TH1F * fSigVertHist[4 *kMaxPtBins]
! hist. for sigVert (Prod Cuts)
Bool_t RecalcOwnPrimaryVtx(AliAODRecoDecayHF *d, AliAODEvent *aod) const
Double_t DecayLength() const
TH2F * fPtVsMassPhi
! hist. of pt vs. mass (phi selection)
TH1F * fMassHistKK[kMaxPtBins]
! hist. of mass spectra of KK
Double_t CosPiKPhiRFramepiKK() const
TH1F * fMassHistK0st[4 *kMaxPtBins]
! hist. of mass spectra via K0* (sig,bkg,tot)
TH2F * fYVsPt
! hist. of Y vs. Pt (prod. cuts)
TH2F * fPtVsMassK0st
! hist. of pt vs. mass (K0* selection)
TList * fListCuts
number of Pt bins
void ApplyCutOnResonances(Bool_t opt=kTRUE)
UChar_t fNPtBins
flag for useage of HasSelectionBit
Bool_t fWriteOnlySignal
flag for access to MC
Double_t fMassBinSize
range for mass histogram
Int_t GetBackgroundHistoIndex(Int_t iPtBin) const
Float_t fPtLimits[kMaxPtBins+1]