#include "AliPIDResponse.h"\r
#include "AliStack.h"\r
#include "AliSpectraAODPID.h"\r
+#include <TMCProcess.h>\r
+\r
#include <iostream>\r
\r
\r
void AliAnalysisTaskSpectraAOD::UserExec(Option_t *)\r
{\r
// main event loop\r
+ Printf("ALIVE");\r
fAOD = dynamic_cast<AliAODEvent*>(fInputEvent);\r
if (strcmp(fAOD->ClassName(), "AliAODEvent"))\r
{\r
AliFatal("Not processing AODs");\r
}\r
- \r
//check on centrality distribution\r
fHistMan->GetPtHistogram("CentCheck")->Fill(fAOD->GetCentrality()->GetCentralityPercentile("V0M"),fAOD->GetHeader()->GetCentralityP()->GetCentralityPercentileUnchecked("V0M"));\r
\r
{\r
AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(iMC);\r
if(!partMC->Charge()) continue;//Skip neutrals\r
- if(TMath::Abs(partMC->Eta()) > fTrackCuts->GetEta()){//charged hadron are filled inside the eta acceptance\r
+ if(TMath::Abs(partMC->Eta()) < fTrackCuts->GetEta()){//charged hadron are filled inside the eta acceptance\r
fHistMan->GetPtHistogram(kHistPtGen)->Fill(partMC->Pt(),partMC->IsPhysicalPrimary());\r
}\r
//rapidity cut\r
// if ((qPos>fTrackCuts->GetQvecMin() && qPos<fTrackCuts->GetQvecMax() && track->Eta()<0) || (qNeg>fTrackCuts->GetQvecMin() && qNeg<fTrackCuts->GetQvecMax() && track->Eta()>=0)){\r
\r
//calculate DCA for AOD track\r
- Double_t d[2], covd[3];\r
- AliAODTrack* track_clone=(AliAODTrack*)track->Clone("track_clone"); // need to clone because PropagateToDCA updates the track parameters\r
- Bool_t isDCA = track_clone->PropagateToDCA(fAOD->GetPrimaryVertex(),fAOD->GetMagneticField(),9999.,d,covd);\r
- delete track_clone;\r
- if(!isDCA)d[0]=-999;\r
- \r
- fHistMan->GetPtHistogram(kHistPtRec)->Fill(track->Pt(),d[0]); // PT histo\r
+ Double_t dca=track->DCA();\r
+ if(dca==-999.){// track->DCA() does not work in old AOD production\r
+ Double_t d[2], covd[3];\r
+ AliAODTrack* track_clone=(AliAODTrack*)track->Clone("track_clone"); // need to clone because PropagateToDCA updates the track parameters\r
+ Bool_t isDCA = track_clone->PropagateToDCA(fAOD->GetPrimaryVertex(),fAOD->GetMagneticField(),9999.,d,covd);\r
+ delete track_clone;\r
+ if(!isDCA)d[0]=-999.;\r
+ dca=d[0];\r
+ }\r
+ fHistMan->GetPtHistogram(kHistPtRec)->Fill(track->Pt(),dca); // PT histo\r
\r
// get identity and charge\r
- Int_t idRec = fPID->GetParticleSpecie(track, fTrackCuts);\r
+ Int_t idRec = fPID->GetParticleSpecie(fHistMan,track, fTrackCuts);\r
\r
Int_t charge = track->Charge() > 0 ? kChPos : kChNeg;\r
\r
// Fill histograms, only if inside y and nsigma acceptance\r
- if(idRec != kSpUndefined && fTrackCuts->CheckYCut ((AODParticleSpecies_t)idRec))fHistMan->GetHistogram2D(kHistPtRecSigma,idRec,charge)->Fill(track->Pt(),d[0]);\r
+ if(idRec != kSpUndefined && fTrackCuts->CheckYCut ((AODParticleSpecies_t)idRec))fHistMan->GetHistogram2D(kHistPtRecSigma,idRec,charge)->Fill(track->Pt(),dca);\r
//can't put a continue because we still have to fill allcharged primaries, done later\r
\r
/* MC Part */\r
codemoth = TMath::Abs(moth->GetPdgCode());\r
mfl = Int_t (codemoth/ TMath::Power(10, Int_t(TMath::Log10(codemoth))));\r
}\r
+ //Int_t uniqueID = partMC->GetUniqueID();\r
+ cout<<"uniqueID: "<<partMC->GetUniqueID()<<" "<<kPDecay<<endl;\r
+ cout<<"status: "<<partMC->GetStatus()<<" "<<kPDecay<<endl;\r
+ // if(uniqueID == kPDecay)Printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");\r
if(mfl==3) isSecondaryWeak = kTRUE; // add if(partMC->GetStatus() & kPDecay)? FIXME\r
else isSecondaryMaterial = kTRUE;\r
}\r
\r
- if (isPrimary)fHistMan->GetPtHistogram(kHistPtRecPrimary)->Fill(track->Pt(),d[0]); // PT histo of primaries\r
+ if (isPrimary)fHistMan->GetPtHistogram(kHistPtRecPrimary)->Fill(track->Pt(),dca); // PT histo of primaries\r
\r
//nsigma cut (reconstructed nsigma)\r
if(idRec == kSpUndefined) continue;\r
//if(TMath::Abs(partMC->Y()) > fTrackCuts->GetY() ) continue; // FIXME: do we need a rapidity cut on the generated?\r
// Fill histograms for primaries\r
\r
- if (idRec == idGen) fHistMan->GetHistogram2D(kHistPtRecTrue, idGen, charge)->Fill(track->Pt(),d[0]); \r
+ if (idRec == idGen) fHistMan->GetHistogram2D(kHistPtRecTrue, idGen, charge)->Fill(track->Pt(),dca); \r
\r
if (isPrimary) {\r
- fHistMan ->GetHistogram2D(kHistPtRecSigmaPrimary, idRec, charge)->Fill(track->Pt(),d[0]); \r
+ fHistMan ->GetHistogram2D(kHistPtRecSigmaPrimary, idRec, charge)->Fill(track->Pt(),dca); \r
if(idGen != kSpUndefined) {\r
- fHistMan ->GetHistogram2D(kHistPtRecPrimary, idGen, charge)->Fill(track->Pt(),d[0]);\r
- if (idRec == idGen) fHistMan->GetHistogram2D(kHistPtRecTruePrimary, idGen, charge)->Fill(track->Pt(),d[0]); \r
+ fHistMan ->GetHistogram2D(kHistPtRecPrimary, idGen, charge)->Fill(track->Pt(),dca);\r
+ if (idRec == idGen) fHistMan->GetHistogram2D(kHistPtRecTruePrimary, idGen, charge)->Fill(track->Pt(),dca); \r
}\r
}\r
//25th Apr - Muons are added to Pions -- FIXME\r
if ( partMC->PdgCode() == 13 && idRec == kSpPion) { \r
- fHistMan->GetPtHistogram(kHistPtRecTrueMuonPlus)->Fill(track->Pt(),d[0]); \r
+ fHistMan->GetPtHistogram(kHistPtRecTrueMuonPlus)->Fill(track->Pt(),dca); \r
if(isPrimary)\r
- fHistMan->GetPtHistogram(kHistPtRecTruePrimaryMuonPlus)->Fill(track->Pt(),d[0]); \r
+ fHistMan->GetPtHistogram(kHistPtRecTruePrimaryMuonPlus)->Fill(track->Pt(),dca); \r
}\r
if ( partMC->PdgCode() == -13 && idRec == kSpPion) { \r
- fHistMan->GetPtHistogram(kHistPtRecTrueMuonMinus)->Fill(track->Pt(),d[0]); \r
+ fHistMan->GetPtHistogram(kHistPtRecTrueMuonMinus)->Fill(track->Pt(),dca); \r
if (isPrimary) {\r
- fHistMan->GetPtHistogram(kHistPtRecTruePrimaryMuonMinus)->Fill(track->Pt(),d[0]); \r
+ fHistMan->GetPtHistogram(kHistPtRecTruePrimaryMuonMinus)->Fill(track->Pt(),dca); \r
}\r
}\r
\r
///..... END FIXME\r
\r
// Fill secondaries\r
- if(isSecondaryWeak ) fHistMan->GetHistogram2D(kHistPtRecSigmaSecondaryWeakDecay, idRec, charge)->Fill(track->Pt(),d[0]);\r
- if(isSecondaryMaterial) fHistMan->GetHistogram2D(kHistPtRecSigmaSecondaryMaterial , idRec, charge)->Fill(track->Pt(),d[0]);\r
+ if(isSecondaryWeak ) fHistMan->GetHistogram2D(kHistPtRecSigmaSecondaryWeakDecay, idRec, charge)->Fill(track->Pt(),dca);\r
+ if(isSecondaryMaterial) fHistMan->GetHistogram2D(kHistPtRecSigmaSecondaryMaterial , idRec, charge)->Fill(track->Pt(),dca);\r
\r
}//end if(arrayMC)\r
} // end loop on tracks\r