fReadMC(kFALSE),
fMCOption(0),
fUseBit(kTRUE),
+ fSubtractTrackletsFromDau(kFALSE),
fRefMult(9.26),
fPdgMeson(411)
{
fReadMC(kFALSE),
fMCOption(0),
fUseBit(kTRUE),
+ fSubtractTrackletsFromDau(kFALSE),
fRefMult(9.26),
fPdgMeson(pdgMeson)
{
nSelectedPID++;
fHistNEvents->Fill(10);
}
+ Double_t multForCand=countTreta1corr;
+ if(fSubtractTrackletsFromDau){
+ for(Int_t iDau=0; iDau<nDau; iDau++){
+ AliAODTrack *t = (AliAODTrack*)d->GetDaughter(iDau);
+ if(!t) continue;
+ if(t->HasPointOnITSLayer(0) && t->HasPointOnITSLayer(1)){
+ if(multForCand>0) multForCand-=1;
+ }
+ }
+ }
Bool_t isPrimary=kTRUE;
Int_t labD=-1;
Double_t trueImpParXY=9999.;
for(Int_t iHyp=0; iHyp<2; iHyp++){
if(mass[iHyp]<0.) continue; // for D+ and D* we have 1 mass hypothesis
Double_t invMass=mass[iHyp];
- Double_t arrayForSparse[5]={invMass,ptCand,impparXY,dlen,countTreta1corr};
+ Double_t arrayForSparse[5]={invMass,ptCand,impparXY,dlen,multForCand};
if(fReadMC){
}else if(fPdgMeson==413){
trueImpParXY=0.; /// FIXME
}
- Double_t arrayForSparseTrue[5]={invMass,ptCand,trueImpParXY,dlen,countTreta1corr};
+ Double_t arrayForSparseTrue[5]={invMass,ptCand,trueImpParXY,dlen,multForCand};
if(fillHisto && passAllCuts){
fHistMassPtImpPar[2]->Fill(arrayForSparse);
fHistMassPtImpPar[3]->Fill(arrayForSparseTrue);
if(iHyp==1 && !(passTopolCuts&2)) continue; // candidate not passing as D0bar
}
- fPtVsMassVsMultNoPid->Fill(countTreta1corr,invMass,ptCand);
+ fPtVsMassVsMultNoPid->Fill(multForCand,invMass,ptCand);
if(fPdgMeson==421){
if(iHyp==0 && !(passAllCuts&1)) continue; // candidate not passing as D0
if(iHyp==1 && !(passAllCuts&2)) continue; // candidate not passing as D0bar
}
if(passAllCuts){
- fPtVsMassVsMult->Fill(countTreta1corr,invMass,ptCand);
+ fPtVsMassVsMult->Fill(multForCand,invMass,ptCand);
fPtVsMassVsMultUncorr->Fill(countTreta1,invMass,ptCand);
// Add separation between part antipart
if(fPdgMeson==411){
- if(d->GetCharge()>0) fPtVsMassVsMultPart->Fill(countTreta1corr,invMass,ptCand);
- else fPtVsMassVsMultAntiPart->Fill(countTreta1corr,invMass,ptCand);
+ if(d->GetCharge()>0) fPtVsMassVsMultPart->Fill(multForCand,invMass,ptCand);
+ else fPtVsMassVsMultAntiPart->Fill(multForCand,invMass,ptCand);
}else if(fPdgMeson==421){
- if(passAllCuts&1) fPtVsMassVsMultPart->Fill(countTreta1corr,invMass,ptCand);
- if(passAllCuts&2) fPtVsMassVsMultAntiPart->Fill(countTreta1corr,invMass,ptCand);
+ if(passAllCuts&1) fPtVsMassVsMultPart->Fill(multForCand,invMass,ptCand);
+ if(passAllCuts&2) fPtVsMassVsMultAntiPart->Fill(multForCand,invMass,ptCand);
}else if(fPdgMeson==413){
// FIXME ADD Dstar!!!!!!!!
}
Double_t GetLowerMassLimit() const {return fLowmasslimit;}
void SetNMassBins(Int_t nbins){fNMassBins=nbins;}
Int_t GetNMassBins() const{return fNMassBins;}
+ Bool_t GetSubtractTrackletsFromDaughters() const {return fSubtractTrackletsFromDau;}
void SetImpactParameterBinning(Int_t nbins, Double_t dmin, Double_t dmax){
fNImpParBins=nbins;
fMultEstimatorAvg[3]=new TProfile(*hprof);
}
void SetReferenceMultiplcity(Double_t rmu){fRefMult=rmu;}
-
+ void SetSubtractTrackletsFromDaughters(Bool_t opt){fSubtractTrackletsFromDau=opt;}
Int_t CheckOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPartCandidate) const;
// Implementation of interface methods
Bool_t fReadMC; //flag for access to MC
Int_t fMCOption; // 0=keep all cand, 1=keep only signal, 2= keep only back
Bool_t fUseBit; // flag to use bitmask
+ Bool_t fSubtractTrackletsFromDau; // flag for subtracting D meson daughter contribution to N of tracklets
TProfile* fMultEstimatorAvg[4]; // TProfile with mult vs. Z per period
Double_t fRefMult; // refrence multiplcity (period b)
Int_t fPdgMeson; // pdg code of analyzed meson
- ClassDef(AliAnalysisTaskSEDvsMultiplicity,4); // D vs. mult task
+ ClassDef(AliAnalysisTaskSEDvsMultiplicity,5); // D vs. mult task
};
#endif