fSmeardEdx(0.),
fRandGener(0),
fFillNtuple(kFALSE),
+ fLowEnergypp(kFALSE),
fNtupleNSigma(0),
fNtupleMC(0)
{
fOutput->SetOwner();
fOutput->SetName("Spiderman");
- fHistNEvents = new TH1F("fHistNEvents", "Number of processed events",7,-0.5,6.5);
+ fHistNEvents = new TH1F("fHistNEvents", "Number of processed events",8,-1.5,6.5);
fHistNEvents->Sumw2();
fHistNEvents->SetMinimum(0);
fOutput->Add(fHistNEvents);
fHistMCSecMatDCANegK[i] = new TH1F(Form("fHistMCSecMatDCANegK%d",i),Form("fHistMCSecMatDCANegK%d",i),2000,-1,1);
fHistMCSecMatDCANegP[i] = new TH1F(Form("fHistMCSecMatDCANegP%d",i),Form("fHistMCSecMatDCANegP%d",i),2000,-1,1);
- fHistMCPosPiHypPion[i] = new TH1F(Form("fHistMCPosPiHypPion%d",i),Form("fHistMCPosPiHypPion%d",i),175,-3.5,3.5); //MC truth
+ fHistMCPosOtherHypPion[i] = new TH1F(Form("fHistMCPosOtherHypPion%d",i),Form("fHistMCPosOtherHypPion%d",i),175,-3.5,3.5); //MC truth
+ fHistMCPosOtherHypKaon[i] = new TH1F(Form("fHistMCPosOtherHypKaon%d",i),Form("fHistMCPosOtherHypKaon%d",i),175,-3.5,3.5);
+ fHistMCPosOtherHypProton[i] = new TH1F(Form("fHistMCPosOtherHypProton%d",i),Form("fHistMCPosOtherHypProton%d",i),175,-3.5,3.5);
+ fHistMCPosElHypPion[i] = new TH1F(Form("fHistMCPosElHypPion%d",i),Form("fHistMCPosElHypPion%d",i),175,-3.5,3.5);
+ fHistMCPosElHypKaon[i] = new TH1F(Form("fHistMCPosElHypKaon%d",i),Form("fHistMCPosElHypKaon%d",i),175,-3.5,3.5);
+ fHistMCPosElHypProton[i] = new TH1F(Form("fHistMCPosElHypProton%d",i),Form("fHistMCPosElHypProton%d",i),175,-3.5,3.5);
+ fHistMCPosPiHypPion[i] = new TH1F(Form("fHistMCPosPiHypPion%d",i),Form("fHistMCPosPiHypPion%d",i),175,-3.5,3.5);
fHistMCPosPiHypKaon[i] = new TH1F(Form("fHistMCPosPiHypKaon%d",i),Form("fHistMCPosPiHypKaon%d",i),175,-3.5,3.5);
fHistMCPosPiHypProton[i] = new TH1F(Form("fHistMCPosPiHypProton%d",i),Form("fHistMCPosPiHypProton%d",i),175,-3.5,3.5);
fHistMCPosKHypPion[i] = new TH1F(Form("fHistMCPosKHypPion%d",i),Form("fHistMCPosKHypPion%d",i),175,-3.5,3.5);
fHistMCPosPHypKaon[i] = new TH1F(Form("fHistMCPosPHypKaon%d",i),Form("fHistMCPosPHypKaon%d",i),175,-3.5,3.5);
fHistMCPosPHypProton[i] = new TH1F(Form("fHistMCPosPHypProton%d",i),Form("fHistMCPosPHypProton%d",i),175,-3.5,3.5);
- fHistMCNegPiHypPion[i] = new TH1F(Form("fHistMCNegPiHypPion%d",i),Form("fHistMCNegPiHypPion%d",i),175,-3.5,3.5); //MC truth
+ fHistMCNegOtherHypPion[i] = new TH1F(Form("fHistMCNegOtherHypPion%d",i),Form("fHistMCNegOtherHypPion%d",i),175,-3.5,3.5); //MC truth
+ fHistMCNegOtherHypKaon[i] = new TH1F(Form("fHistMCNegOtherHypKaon%d",i),Form("fHistMCNegOtherHypKaon%d",i),175,-3.5,3.5);
+ fHistMCNegOtherHypProton[i] = new TH1F(Form("fHistMCNegOtherHypProton%d",i),Form("fHistMCNegOtherHypProton%d",i),175,-3.5,3.5);
+ fHistMCNegElHypPion[i] = new TH1F(Form("fHistMCNegElHypPion%d",i),Form("fHistMCNegElHypPion%d",i),175,-3.5,3.5);
+ fHistMCNegElHypKaon[i] = new TH1F(Form("fHistMCNegElHypKaon%d",i),Form("fHistMCNegElHypKaon%d",i),175,-3.5,3.5);
+ fHistMCNegElHypProton[i] = new TH1F(Form("fHistMCNegElHypProton%d",i),Form("fHistMCNegElHypProton%d",i),175,-3.5,3.5);
+ fHistMCNegPiHypPion[i] = new TH1F(Form("fHistMCNegPiHypPion%d",i),Form("fHistMCNegPiHypPion%d",i),175,-3.5,3.5);
fHistMCNegPiHypKaon[i] = new TH1F(Form("fHistMCNegPiHypKaon%d",i),Form("fHistMCNegPiHypKaon%d",i),175,-3.5,3.5);
fHistMCNegPiHypProton[i] = new TH1F(Form("fHistMCNegPiHypProton%d",i),Form("fHistMCNegPiHypProton%d",i),175,-3.5,3.5);
fHistMCNegKHypPion[i] = new TH1F(Form("fHistMCNegKHypPion%d",i),Form("fHistMCNegKHypPion%d",i),175,-3.5,3.5);
fOutput->Add(fHistMCSecMatDCANegK[i]);
fOutput->Add(fHistMCSecMatDCANegP[i]);
- fOutput->Add(fHistMCPosPiHypPion[i]);//MC truth
+ fOutput->Add(fHistMCPosOtherHypPion[i]);//MC truth
+ fOutput->Add(fHistMCPosOtherHypKaon[i]);
+ fOutput->Add(fHistMCPosOtherHypProton[i]);
+ fOutput->Add(fHistMCPosElHypPion[i]);
+ fOutput->Add(fHistMCPosElHypKaon[i]);
+ fOutput->Add(fHistMCPosElHypProton[i]);
+ fOutput->Add(fHistMCPosPiHypPion[i]);
fOutput->Add(fHistMCPosPiHypKaon[i]);
fOutput->Add(fHistMCPosPiHypProton[i]);
fOutput->Add(fHistMCPosKHypPion[i]);
fOutput->Add(fHistMCPosPHypKaon[i]);
fOutput->Add(fHistMCPosPHypProton[i]);
- fOutput->Add(fHistMCNegPiHypPion[i]);//MC truth
+ fOutput->Add(fHistMCNegOtherHypPion[i]);//MC truth
+ fOutput->Add(fHistMCNegOtherHypKaon[i]);
+ fOutput->Add(fHistMCNegOtherHypProton[i]);
+ fOutput->Add(fHistMCNegElHypPion[i]);
+ fOutput->Add(fHistMCNegElHypKaon[i]);
+ fOutput->Add(fHistMCNegElHypProton[i]);
+ fOutput->Add(fHistMCNegPiHypPion[i]);
fOutput->Add(fHistMCNegPiHypKaon[i]);
fOutput->Add(fHistMCNegPiHypProton[i]);
fOutput->Add(fHistMCNegKHypPion[i]);
}
- fNtupleNSigma = new TNtuple("fNtupleNSigma","fNtupleNSigma","p:pt:dedx:ncls:sign:run:eta:impactXY:impactZ:isph:pdgcode:mfl:chi2ncls");
+ fNtupleNSigma = new TNtuple("fNtupleNSigma","fNtupleNSigma","p:pt:dedx:dedx3:dedx4:dedx5:dedx6:ncls:nclspid:sign:run:eta:impactXY:impactZ:isph:pdgcode:mfl:uniqueID:chi2ncls");
fOutput->Add(fNtupleNSigma);
fNtupleMC = new TNtuple("fNtupleMC","fNtupleMC","ptMC:pdgcode:signMC:etaMC:yMC:isph:evSel:run");
fOutput->Add(fNtupleMC);
// Main loop
// Called for each event
- fESD=(AliESDEvent*)InputEvent();
- if(!fESD) {
- printf("AliAnalysisTaskSDDRP::Exec(): bad ESD\n");
- return;
- }
- fHistNEvents->Fill(0);
-
///////////////////////////////////////
//variables
Float_t pdgmass[4]={0.13957,0.493677,0.938272,1.8756}; //mass for pi, K, P (Gev/c^2)
Int_t listcode[3]={211,321,2212};//code for pi, K, P (Gev/c^2)
- Double_t s[4];
+ Double_t dedxLay[4];
Float_t ptMC=-999;
- Int_t code=-999, signMC=-999,isph=-999,mfl=-999;
+ Int_t code=-999, signMC=-999,isph=-999,mfl=-999,uniqueID=-999;
Float_t impactXY=-999, impactZ=-999;
Int_t evSel=1;
AliESDtrack* track;
TParticlePDG *pdgPart=0;
/////////////////////
+
+ fESD=(AliESDEvent*)InputEvent();
+ if(!fESD) {
+ printf("AliAnalysisTaskSDDRP::Exec(): bad ESD\n");
+ return;
+ }
+ fHistNEvents->Fill(-1);
+
+ if(fLowEnergypp){ // remove events without SDD in pp 2.6 TeV
+ Bool_t hasSDD=kFALSE;
+ for (Int_t iTrack=0; iTrack<fESD->GetNumberOfTracks(); iTrack++) {
+ track = (AliESDtrack*)fESD->GetTrack(iTrack);
+ if (!track) continue;
+ UInt_t clumap = track->GetITSClusterMap();
+ if(clumap&4) hasSDD=kTRUE;
+ if(clumap&8) hasSDD=kTRUE;
+ if(hasSDD) break;
+ }
+ if(!hasSDD) return;
+ }
+ fHistNEvents->Fill(0);
+
+
if(fMC){
AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
if (!eventHandler) {
return;
}
}
- //flags for MC
if(!fITSPIDResponse){
fITSPIDResponse=new AliITSPIDResponse(fMC);
}
+ //flags for MC
Int_t nTrackMC=0;
if(stack) nTrackMC = stack->GetNtrack();
const AliESDVertex *vtx = fESD->GetPrimaryVertexSPD();
}
}
}
-/////first loop on stack, before event selection, filling MC ntuple
-
+
+
+ /////first loop on stack, before event selection, filling MC ntuple
+
for(Int_t imc=0; imc<nTrackMC; imc++){
part = stack->Particle(imc);
isph=1;
Float_t codemoth = TMath::Abs(moth->GetPdgCode());
mfl = Int_t (codemoth/ TMath::Power(10, Int_t(TMath::Log10(codemoth))));
}
+ uniqueID = part->GetUniqueID();
//filling MC ntuple
if(TMath::Abs(code)==211 || TMath::Abs(code)==321 || TMath::Abs(code)==2212){
else fHistPrimMCneg[jpart]->Fill(TMath::Abs(ptMC));
}
}else{
- if(mfl==3){ // strangeness
+ if(mfl==3 && uniqueID == kPDecay){ // If a particle is not a physical primary, check if it comes from weak decay
if(signMC>0) fHistSecStrMCposBefEvSel[jpart]->Fill(TMath::Abs(ptMC));
else fHistSecStrMCnegBefEvSel[jpart]->Fill(TMath::Abs(ptMC));
if(evSel==1){
isph=-999;
code=-999;
mfl=-999;
+ uniqueID=-999;
track = (AliESDtrack*)fESD->GetTrack(iTrack);
if (!track) continue;
fHistNTracksNeg->GetXaxis()->SetBinLabel(fHistNTracksNeg->FindBin(countBinTrk),label.Data());
countBinTrk++;
- Int_t count=0;
- for(Int_t j=2;j<6;j++) if(TESTBIT(clumap,j)) count++;
- if(count<fMinNdEdxSamples) continue; //at least 3 points on SSD/SDD
+ Int_t nPtsForPid=0;
+ for(Int_t j=2;j<6;j++) if(TESTBIT(clumap,j)) nPtsForPid++;
+ if(nPtsForPid<fMinNdEdxSamples) continue; //at least 3 points on SSD/SDD
label="SDD+SSD cls";
fHistNTracks->Fill(countBinTrk);
countBinTrk++;
//chisquare/nclusters
- Int_t nclu=nSPD+count;
+ Int_t nclu=nSPD+nPtsForPid;
if(track->GetITSchi2()/nclu > fMaxChi2Clu) continue;
label="chi2/ncls";
countBinTrk++;
//truncated mean
- //if(fMC) for(Int_t j=0;j<2;j++) s[j]*=3.34/5.43;//correction for SDD miscalibration of the MCpass4
- track->GetITSdEdxSamples(s);
- Double_t dedx = CookdEdx(s);
+ track->GetITSdEdxSamples(dedxLay);
+ Double_t dedx = CookdEdx(dedxLay);
if(dedx<0) continue;
label="de/dx<0";
Float_t codemoth = TMath::Abs(moth->GetPdgCode());
mfl = Int_t (codemoth/ TMath::Power(10, Int_t(TMath::Log10(codemoth))));
}
+ uniqueID = part->GetUniqueID();
}
//Filling DCA distribution with MC truth
}
if(isph==0){//primaries in MC
- if(mfl==3){
+ if(mfl==3 && uniqueID == kPDecay){
if(track->GetSign()>0){
if(TMath::Abs(code)==listcode[0]) fHistMCSecStDCAPosPi[theBin]->Fill(impactXY);
if(TMath::Abs(code)==listcode[1]) fHistMCSecStDCAPosK[theBin]->Fill(impactXY);
}
}
}
- Float_t xnt[13];
+ Float_t xnt[19];
Int_t index=0;
xnt[index++]=(Float_t)track->GetP();
xnt[index++]=(Float_t)track->Pt();
xnt[index++]=(Float_t)dedx;
- xnt[index++]=(Float_t)count;
+ xnt[index++]=(Float_t)dedxLay[0];
+ xnt[index++]=(Float_t)dedxLay[1];
+ xnt[index++]=(Float_t)dedxLay[2];
+ xnt[index++]=(Float_t)dedxLay[3];
+ xnt[index++]=(Float_t)nclu;
+ xnt[index++]=(Float_t)nPtsForPid;
xnt[index++]=(Float_t)track->GetSign();
xnt[index++]=(Float_t)fESD->GetRunNumber();
xnt[index++]=(Float_t)track->Eta();
xnt[index++]=(Float_t)isph;
xnt[index++]=(Float_t)code;
xnt[index++]=(Float_t)mfl;
+ xnt[index++]=(Float_t)uniqueID;
xnt[index]=(Float_t)track->GetITSchi2()/nclu;
if(fFillNtuple) fNtupleNSigma->Fill(xnt);
logdiff[i]=TMath::Log(dedx) - TMath::Log(bbtheo[i]);
}
- Int_t resocls=(Int_t)count-1;
+ Int_t resocls=(Int_t)nPtsForPid-1;
//NSigma Method, with asymmetric bands
Int_t minPosMean=-1;
fHistNTracksPos->GetXaxis()->SetBinLabel(fHistNTracksPos->FindBin(countBinTrk),label.Data());
fHistNTracksNeg->GetXaxis()->SetBinLabel(fHistNTracksNeg->FindBin(countBinTrk),label.Data());
countBinTrk++;
+
+
+ Int_t jpart=-1;
//Filling Histos for Reco Efficiency
//information from the MC kinematics
part = (TParticle*)stack->Particle(track->GetLabel());
pdgPart = part->GetPDG();
code = pdgPart->PdgCode();
- Int_t jpart=-1;
for(Int_t j=0; j<3; j++){
if(TMath::Abs(code)==listcode[j]){
jpart=j;
break;
}
}
- if(jpart<0) continue;
- if(pdgPart->Charge()>0) signMC=1;
- else signMC=-1;
- ptMC=part->Pt();
- if(stack->IsPhysicalPrimary(track->GetLabel())){
- if(signMC>0) fHistPrimMCposReco[jpart]->Fill(TMath::Abs(ptMC));
- else fHistPrimMCnegReco[jpart]->Fill(TMath::Abs(ptMC));
- }else{
- Int_t indexMoth=part->GetFirstMother();
- if(indexMoth>=0){
- TParticle* moth = stack->Particle(indexMoth);
- Float_t codemoth = TMath::Abs(moth->GetPdgCode());
- mfl = Int_t (codemoth/ TMath::Power(10, Int_t(TMath::Log10(codemoth))));
- }
- if(mfl==3){ // strangeness
- if(signMC>0) fHistSecStrMCposReco[jpart]->Fill(TMath::Abs(ptMC));
- else fHistSecStrMCnegReco[jpart]->Fill(TMath::Abs(ptMC));
- }else{
- if(signMC>0) fHistSecMatMCposReco[jpart]->Fill(TMath::Abs(ptMC));
- else fHistSecMatMCnegReco[jpart]->Fill(TMath::Abs(ptMC));
+ if(jpart>=0){
+ if(pdgPart->Charge()>0) signMC=1;
+ else signMC=-1;
+ ptMC=part->Pt();
+ if(stack->IsPhysicalPrimary(track->GetLabel())){
+ if(signMC>0) fHistPrimMCposReco[jpart]->Fill(TMath::Abs(ptMC));
+ else fHistPrimMCnegReco[jpart]->Fill(TMath::Abs(ptMC));
+ }else{
+ Int_t indexMoth=part->GetFirstMother();
+ if(indexMoth>=0){
+ TParticle* moth = stack->Particle(indexMoth);
+ Float_t codemoth = TMath::Abs(moth->GetPdgCode());
+ mfl = Int_t (codemoth/ TMath::Power(10, Int_t(TMath::Log10(codemoth))));
+ }
+ uniqueID = part->GetUniqueID();
+ if(mfl==3 && uniqueID == kPDecay){ // strangeness
+ if(signMC>0) fHistSecStrMCposReco[jpart]->Fill(TMath::Abs(ptMC));
+ else fHistSecStrMCnegReco[jpart]->Fill(TMath::Abs(ptMC));
+ }else{
+ if(signMC>0) fHistSecMatMCposReco[jpart]->Fill(TMath::Abs(ptMC));
+ else fHistSecMatMCnegReco[jpart]->Fill(TMath::Abs(ptMC));
+ }
}
}
}
if(isph==1){
if(track->GetSign()>0) fHistPosNSigmaPrim[minPos]->Fill(pt);
else fHistNegNSigmaPrim[minPos]->Fill(pt);
- //nsigma histos with MC truth on IsPhysicalPrimary and PID
+ //nsigma histos with MC truth on IsPhysicalPrimary and PID
if(TMath::Abs(code)==listcode[minPos]){
if(track->GetSign()>0) fHistPosNSigmaPrimMC[minPos]->Fill(pt);
else fHistNegNSigmaPrimMC[minPos]->Fill(pt);
if(TMath::Abs(y[2]) < fMaxY)fHistPosP[theBin]->Fill(logdiff[2]);
if(fMC){
if(TMath::Abs(y[0])<fMaxY){
+ if(TMath::Abs(code)!=11 && jpart<0)fHistMCPosOtherHypPion[theBin]->Fill(logdiff[0]);
+ if(TMath::Abs(code)==11)fHistMCPosElHypPion[theBin]->Fill(logdiff[0]);
if(TMath::Abs(code)==211)fHistMCPosPiHypPion[theBin]->Fill(logdiff[0]);
if(TMath::Abs(code)==321)fHistMCPosKHypPion[theBin]->Fill(logdiff[0]);
if(TMath::Abs(code)==2212)fHistMCPosPHypPion[theBin]->Fill(logdiff[0]);
}
if(TMath::Abs(y[1])<fMaxY){
+ if(TMath::Abs(code)!=11 && jpart<0)fHistMCPosOtherHypKaon[theBin]->Fill(logdiff[1]);
+ if(TMath::Abs(code)==11)fHistMCPosElHypKaon[theBin]->Fill(logdiff[1]);
if(TMath::Abs(code)==211)fHistMCPosPiHypKaon[theBin]->Fill(logdiff[1]);
if(TMath::Abs(code)==321)fHistMCPosKHypKaon[theBin]->Fill(logdiff[1]);
if(TMath::Abs(code)==2212)fHistMCPosPHypKaon[theBin]->Fill(logdiff[1]);
}
if(TMath::Abs(y[2])<fMaxY){
- if(TMath::Abs(code)==211)fHistMCPosPiHypProton[theBin]->Fill(logdiff[2]);
- if(TMath::Abs(code)==321)fHistMCPosKHypProton[theBin]->Fill(logdiff[2]);
- if(TMath::Abs(code)==2212)fHistMCPosPHypProton[theBin]->Fill(logdiff[2]);
+ if(TMath::Abs(code)!=11 && jpart<0)fHistMCPosOtherHypProton[theBin]->Fill(logdiff[2]);
+ if(TMath::Abs(code)==11)fHistMCPosElHypProton[theBin]->Fill(logdiff[2]);
+ if(TMath::Abs(code)==211)fHistMCPosPiHypProton[theBin]->Fill(logdiff[2]);
+ if(TMath::Abs(code)==321)fHistMCPosKHypProton[theBin]->Fill(logdiff[2]);
+ if(TMath::Abs(code)==2212)fHistMCPosPHypProton[theBin]->Fill(logdiff[2]);
}
}
}else{
if(TMath::Abs(y[2]) < fMaxY)fHistNegP[theBin]->Fill(logdiff[2]);
if(fMC){
if(TMath::Abs(y[0])<fMaxY){
+ if(TMath::Abs(code)!=11 && jpart<0)fHistMCNegOtherHypPion[theBin]->Fill(logdiff[0]);
+ if(TMath::Abs(code)==11)fHistMCNegElHypPion[theBin]->Fill(logdiff[0]);
if(TMath::Abs(code)==211)fHistMCNegPiHypPion[theBin]->Fill(logdiff[0]);
if(TMath::Abs(code)==321)fHistMCNegKHypPion[theBin]->Fill(logdiff[0]);
if(TMath::Abs(code)==2212)fHistMCNegPHypPion[theBin]->Fill(logdiff[0]);
}
if(TMath::Abs(y[1])<fMaxY){
+ if(TMath::Abs(code)!=11 && jpart<0)fHistMCNegOtherHypKaon[theBin]->Fill(logdiff[1]);
+ if(TMath::Abs(code)==11)fHistMCNegElHypKaon[theBin]->Fill(logdiff[1]);
if(TMath::Abs(code)==211)fHistMCNegPiHypKaon[theBin]->Fill(logdiff[1]);
if(TMath::Abs(code)==321)fHistMCNegKHypKaon[theBin]->Fill(logdiff[1]);
if(TMath::Abs(code)==2212)fHistMCNegPHypKaon[theBin]->Fill(logdiff[1]);
}
if(TMath::Abs(y[2])<fMaxY){
+ if(TMath::Abs(code)!=11 && jpart<0)fHistMCNegOtherHypProton[theBin]->Fill(logdiff[2]);
+ if(TMath::Abs(code)==11)fHistMCNegElHypProton[theBin]->Fill(logdiff[2]);
if(TMath::Abs(code)==211)fHistMCNegPiHypProton[theBin]->Fill(logdiff[2]);
if(TMath::Abs(code)==321)fHistMCNegKHypProton[theBin]->Fill(logdiff[2]);
if(TMath::Abs(code)==2212)fHistMCNegPHypProton[theBin]->Fill(logdiff[2]);
//fill charge distribution histo to check the calibration
for(Int_t j=0;j<4;j++){
- if(s[j]<5) continue;
- fHistCharge[j]->Fill(s[j]);
+ if(dedxLay[j]<5) continue;
+ fHistCharge[j]->Fill(dedxLay[j]);
}
}
fHistMCSecMatDCANegK[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCSecMatDCANegK%d",i)));
fHistMCSecMatDCANegP[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCSecMatDCANegP%d",i)));
+ fHistMCPosOtherHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosOtherHypPion%d",i)));
+ fHistMCPosOtherHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosOtherHypKaon%d",i)));
+ fHistMCPosOtherHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosOtherHypProton%d",i)));
+ fHistMCPosElHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosElHypPion%d",i)));
+ fHistMCPosElHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosElHypKaon%d",i)));
+ fHistMCPosElHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosElHypProton%d",i)));
fHistMCPosPiHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosPiHypPion%d",i)));
fHistMCPosPiHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosPiHypKaon%d",i)));
fHistMCPosPiHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosPiHypProton%d",i)));
fHistMCPosPHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosPHypKaon%d",i)));
fHistMCPosPHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosPHypProton%d",i)));
+ fHistMCNegOtherHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegOtherHypPion%d",i)));
+ fHistMCNegOtherHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegOtherHypKaon%d",i)));
+ fHistMCNegOtherHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegOtherHypProton%d",i)));
+ fHistMCNegElHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegElHypPion%d",i)));
+ fHistMCNegElHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegElHypKaon%d",i)));
+ fHistMCNegElHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegElHypProton%d",i)));
fHistMCNegPiHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegPiHypPion%d",i)));
fHistMCNegPiHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegPiHypKaon%d",i)));
fHistMCNegPiHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegPiHypProton%d",i)));