ClassImp(AliAnalysisTaskSpectraBoth)
//________________________________________________________________________
-AliAnalysisTaskSpectraBoth::AliAnalysisTaskSpectraBoth(const char *name) : AliAnalysisTaskSE(name), fAOD(0), fHistMan(0), fTrackCuts(0), fEventCuts(0), fPID(0), fIsMC(0), fNRebin(0),fUseMinSigma(0),fCuts(0),fdotheMCLoopAfterEventCuts(0),
-fmakePIDQAhisto(1),fMotherWDPDGcode(-1)
+AliAnalysisTaskSpectraBoth::AliAnalysisTaskSpectraBoth(const char *name) : AliAnalysisTaskSE(name), fAOD(0), fHistMan(0), fTrackCuts(0), fEventCuts(0), fPID(0), fIsMC(0), fNRebin(0),fUseMinSigma(0),fCuts(0),fdotheMCLoopAfterEventCuts(0),fmakePIDQAhisto(1),fMotherWDPDGcode(-1)
{
// Default constructor
}
else
AliFatal("Not processing AODs or ESDS") ;
+ if(fIsMC)
+ {
+ if(!fEventCuts->CheckMCProcessType(MCEvent()))
+ return ;
+ }
+
+
if(fdotheMCLoopAfterEventCuts)
- if(!fEventCuts->IsSelected(fAOD,fTrackCuts))return;//event selection
+ if(!fEventCuts->IsSelected(fAOD,fTrackCuts,fIsMC,-100,fHistMan->GetEventStatHist()))
+ return;//event selection
TClonesArray *arrayMC = 0;
Int_t npar=0;
AliStack* stack=0x0;
}
}
if(!fdotheMCLoopAfterEventCuts)
- if(!fEventCuts->IsSelected(fAOD,fTrackCuts,fIsMC,mcZ))return;//event selection
+ if(!fEventCuts->IsSelected(fAOD,fTrackCuts,fIsMC,mcZ,fHistMan->GetEventStatHist()))
+ return;//event selection
//main loop on tracks
Int_t ntracks=0;
//cout<<fAOD->GetNumberOfTracks()<<endl;
else
continue;
if (!fTrackCuts->IsSelected(track,kTRUE))
- continue;
+ continue;
+
ntracks++;
if(fmakePIDQAhisto)
fPID->FillQAHistos(fHistMan, track, fTrackCuts);
fHistMan->GetPtHistogram(kHistPtRec)->Fill(track->Pt(),dca); // PT histo
// get identity and charge
Bool_t rec[3]={false,false,false};
+ Bool_t sel[3]={false,false,false};
Int_t idRec = fPID->GetParticleSpecie(fHistMan,track, fTrackCuts,rec);
for(int irec=kSpPion;irec<kNSpecies;irec++)
{
if(idRec != kSpUndefined && fTrackCuts->CheckYCut ((BothParticleSpecies_t)idRec))
{
fHistMan->GetHistogram2D(kHistPtRecSigma,idRec,charge)->Fill(track->Pt(),dca);
- fTrackCuts->GetHistoDCAzQA()->Fill(idRec,track->Pt(),dcaz);
- fTrackCuts->GetHistoNclustersQA()->Fill(idRec,track->Pt(),ncls);
- fTrackCuts->GetHistochi2perNDFQA()->Fill(idRec,track->Pt(),chi2perndf);
+ if(fTrackCuts->GetMakeQAhisto())
+ {
+ fTrackCuts->GetHistoDCAzQA()->Fill(idRec,track->Pt(),dcaz);
+ fTrackCuts->GetHistoNclustersQA()->Fill(idRec,track->Pt(),ncls);
+ fTrackCuts->GetHistochi2perNDFQA()->Fill(idRec,track->Pt(),chi2perndf);
+ }
+ sel[idRec]=true;
}
//can't put a continue because we still have to fill allcharged primaries, done later
if(indexMoth>=0)
{
AliAODMCParticle* moth = (AliAODMCParticle*) arrayMC->At(indexMoth);
- if(!moth)
+ if(moth)
motherpdg=TMath::Abs(moth->GetPdgCode());
}
}
if(!fTrackCuts->CheckYCut ((BothParticleSpecies_t)idRec)) continue;
// Get true ID
-
+
if (idRec == idGen) fHistMan->GetHistogram2D(kHistPtRecTrue, idGen, charge)->Fill(track->Pt(),dca);
}//end if(arrayMC)
}
+ if(sel[0]&&sel[1]&&sel[2])//pi+k+p
+ fHistMan->GetPtHistogram("hHistDoubleCounts")->Fill(track->Pt(),0);
+ else if(sel[0]&&sel[1]) //pi+k
+ fHistMan->GetPtHistogram("hHistDoubleCounts")->Fill(track->Pt(),1);
+ else if(sel[0]&&sel[2]) //pi+k
+ fHistMan->GetPtHistogram("hHistDoubleCounts")->Fill(track->Pt(),2);
+ else if(sel[1]&&sel[2]) //p+k
+ fHistMan->GetPtHistogram("hHistDoubleCounts")->Fill(track->Pt(),3);
+
} // end loop on tracks