fOutput(0),
fHistNEvents(0),
fPtVsMass(0),
+ fPtVsMassPhi(0),
+ fPtVsMassK0st(0),
fYVsPt(0),
fYVsPtSig(0),
fNtupleDs(0),
fFillNtuple(0),
fReadMC(kFALSE),
+ fWriteOnlySignal(kFALSE),
fDoCutVarHistos(kTRUE),
fUseSelectionBit(kFALSE),
fNPtBins(0),
fAnalysisCuts(0)
{
// Default constructor
+
+ for(Int_t i=0;i<3;i++){
+ if(fHistCentrality[i])fHistCentrality[i]=0;
+ if(fHistCentralityMult[i])fHistCentralityMult[i]=0;
+ }
+
for(Int_t i=0;i<4;i++) {
if(fChanHist[i]) fChanHist[i]=0;
fOutput(0),
fHistNEvents(0),
fPtVsMass(0),
+ fPtVsMassPhi(0),
+ fPtVsMassK0st(0),
fYVsPt(0),
fYVsPtSig(0),
fNtupleDs(0),
fFillNtuple(fillNtuple),
fReadMC(kFALSE),
+ fWriteOnlySignal(kFALSE),
fDoCutVarHistos(kTRUE),
fUseSelectionBit(kFALSE),
fNPtBins(0),
// Default constructor
// Output slot #1 writes into a TList container
+ for(Int_t i=0;i<3;i++){
+ if(fHistCentrality[i])fHistCentrality[i]=0;
+ if(fHistCentralityMult[i])fHistCentralityMult[i]=0;
+ }
+
for(Int_t i=0;i<4;i++) {
if(fChanHist[i]) fChanHist[i]=0;
}
}
delete fPtVsMass;
+ delete fPtVsMassPhi;
+ delete fPtVsMassK0st;
delete fYVsPt;
delete fYVsPtSig;
delete fNtupleDs;
fOutput = new TList();
fOutput->SetOwner();
fOutput->SetName("OutputHistos");
+
+ fHistCentrality[0]=new TH1F("hCentr","centrality",10000,0.,100.);
+ fHistCentrality[1]=new TH1F("hCentr(selectedCent)","centrality(selectedCent)",10000,0.,100.);
+ fHistCentrality[2]=new TH1F("hCentr(OutofCent)","centrality(OutofCent)",10000,0.,100.);
+ fHistCentralityMult[0]=new TH2F("hCentrMult","centrality vs mult",100,0.5,30000.5,40,0.,100.);
+ fHistCentralityMult[1]=new TH2F("hCentrMult(selectedCent)","centrality vs mult(selectedCent)",100,0.5,30000.5,40,0.,100.);
+ fHistCentralityMult[2]=new TH2F("hCentrMult(OutofCent)","centrality vs mult(OutofCent)",100,0.5,30000.5,40,0.,100.);
+ for(Int_t i=0;i<3;i++){
+ fHistCentrality[i]->Sumw2();
+ fOutput->Add(fHistCentrality[i]);
+ fHistCentralityMult[i]->Sumw2();
+ fOutput->Add(fHistCentralityMult[i]);
+ }
Double_t massDs=TDatabasePDG::Instance()->GetParticle(431)->Mass();
fOutput->Add(fHistNEvents);
fPtVsMass=new TH2F("hPtVsMass","PtVsMass (prod. cuts)",nInvMassBins,minMass,maxMass,40,0.,20.);
+ fPtVsMassPhi=new TH2F("hPtVsMassPhi","PtVsMass (phi selection)",nInvMassBins,minMass,maxMass,200,0.,20.);
+ fPtVsMassK0st=new TH2F("hPtVsMassK0st","PtVsMass (K0* selection)",nInvMassBins,minMass,maxMass,200,0.,20.);
fYVsPt=new TH2F("hYVsPt","YvsPt (prod. cuts)",40,0.,20.,80,-2.,2.);
fYVsPtSig=new TH2F("hYVsPtSig","YvsPt (MC, only sig., prod. cuts)",40,0.,20.,80,-2.,2.);
fOutput->Add(fPtVsMass);
+ fOutput->Add(fPtVsMassPhi);
+ fOutput->Add(fPtVsMassK0st);
fOutput->Add(fYVsPt);
fOutput->Add(fYVsPtSig);
Bool_t isEvSel=fAnalysisCuts->IsEventSelected(aod);
+ Float_t ntracks=aod->GetNTracks();
+ Float_t evCentr=fAnalysisCuts->GetCentrality(aod);
+
+ fHistCentrality[0]->Fill(evCentr);
+ fHistCentralityMult[0]->Fill(ntracks,evCentr);
if(fAnalysisCuts->IsEventRejectedDueToTrigger())fHistNEvents->Fill(2);
if(fAnalysisCuts->IsEventRejectedDueToNotRecoVertex())fHistNEvents->Fill(3);
if(fAnalysisCuts->IsEventRejectedDueToVertexContributors())fHistNEvents->Fill(4);
if(fAnalysisCuts->IsEventRejectedDueToZVertexOutsideFiducialRegion())fHistNEvents->Fill(5);
- if(fAnalysisCuts->IsEventRejectedDueToPileupSPD())fHistNEvents->Fill(6);
- if(fAnalysisCuts->IsEventRejectedDueToCentrality())fHistNEvents->Fill(7);
+ if(fAnalysisCuts->IsEventRejectedDueToPileup())fHistNEvents->Fill(6);
+ if(fAnalysisCuts->IsEventRejectedDueToCentrality()){
+ fHistNEvents->Fill(7);
+ fHistCentrality[2]->Fill(evCentr);
+ fHistCentralityMult[2]->Fill(ntracks,evCentr);
+ }
Float_t centrality=fAnalysisCuts->GetCentrality(aod);
Int_t runNumber=aod->GetRunNumber();
if(!isEvSel)return;
-
-
-
fHistNEvents->Fill(1);
+ fHistCentrality[1]->Fill(evCentr);
+ fHistCentralityMult[1]->Fill(ntracks,evCentr);
TClonesArray *arrayMC=0;
AliAODMCHeader *mcHeader=0;
Double_t ptCand = d->Pt();
Int_t iPtBin=TMath::BinarySearch(fNPtBins,fPtLimits,(Float_t)ptCand);
- Int_t retCodeAnalysisCuts=fAnalysisCuts->IsSelected(d,AliRDHFCuts::kCandidate,aod);
+ Int_t retCodeAnalysisCuts=fAnalysisCuts->IsSelected(d,AliRDHFCuts::kAll,aod);
Double_t rapid=d->YDs();
fYVsPt->Fill(ptCand,rapid);
Int_t indexMCpiKK=-1;
Int_t labDs=-1;
Int_t pdgCode0=-999;
-
+ Int_t isMCSignal=-1;
+
if(fReadMC){
labDs = d->MatchToMC(431,arrayMC,3,pdgDstoKKpi);
if(labDs>=0){
indexMCKKpi=GetSignalHistoIndex(iPtBin);
fYVsPtSig->Fill(ptCand,rapid);
fChanHist[1]->Fill(retCodeAnalysisCuts);
+ isMCSignal=1;
}else{
indexMCKKpi=GetReflSignalHistoIndex(iPtBin);
fChanHist[3]->Fill(retCodeAnalysisCuts);
+ isMCSignal=0;
}
}
if(ispiKK){
indexMCpiKK=GetSignalHistoIndex(iPtBin);
fYVsPtSig->Fill(ptCand,rapid);
fChanHist[1]->Fill(retCodeAnalysisCuts);
+ isMCSignal=1;
}else{
indexMCpiKK=GetReflSignalHistoIndex(iPtBin);
fChanHist[3]->Fill(retCodeAnalysisCuts);
+ isMCSignal=0;
}
}
}else{
Double_t invMass=d->InvMassDsKKpi();
fMassHist[index]->Fill(invMass);
fPtVsMass->Fill(invMass,ptCand);
- if(isPhiKKpi) fMassHistPhi[index]->Fill(invMass);
- if(isK0starKKpi) fMassHistK0st[index]->Fill(invMass);
+ if(isPhiKKpi){
+ fMassHistPhi[index]->Fill(invMass);
+ fPtVsMassPhi->Fill(invMass,ptCand);
+ }
+ if(isK0starKKpi){
+ fMassHistK0st[index]->Fill(invMass);
+ fPtVsMassK0st->Fill(invMass,ptCand);
+ }
if(fReadMC && indexMCKKpi!=-1){
fMassHist[indexMCKKpi]->Fill(invMass);
if(isPhiKKpi) fMassHistPhi[indexMCKKpi]->Fill(invMass);
Double_t invMass=d->InvMassDspiKK();
fMassHist[index]->Fill(invMass);
fPtVsMass->Fill(invMass,ptCand);
- if(isPhipiKK) fMassHistPhi[index]->Fill(invMass);
- if(isK0starpiKK) fMassHistK0st[index]->Fill(invMass);
+ if(isPhipiKK){
+ fMassHistPhi[index]->Fill(invMass);
+ fPtVsMassPhi->Fill(invMass,ptCand);
+ }
+ if(isK0starpiKK){
+ fMassHistK0st[index]->Fill(invMass);
+ fPtVsMassK0st->Fill(invMass,ptCand);
+ }
if(fReadMC && indexMCpiKK!=-1){
fMassHist[indexMCpiKK]->Fill(invMass);
if(isPhipiKK) fMassHistPhi[indexMCpiKK]->Fill(invMass);
UInt_t BitMapPIDTrack2=fAnalysisCuts->GetPIDTrackTPCTOFBitMap(track2);
tmp[0]=Float_t(labDs);
+ if(fReadMC && fWriteOnlySignal) tmp[0]=Float_t(isMCSignal);
tmp[1]=Float_t(retCodeAnalysisCuts);
tmp[2]=Float_t(pdgCode0);
tmp[3]=d->PtProng(0);
tmp[35]=(Float_t)(centrality);
tmp[36]=(Float_t)(runNumber);
- fNtupleDs->Fill(tmp);
+ if(fReadMC && fWriteOnlySignal){
+ if(isMCSignal>=0) fNtupleDs->Fill(tmp);
+ }else{
+ fNtupleDs->Fill(tmp);
+ }
PostData(4,fNtupleDs);
- }
+ }
}
if(unsetvtx) d->UnsetOwnPrimaryVtx();