From: morsch Date: Wed, 2 Sep 2009 16:12:39 +0000 (+0000) Subject: MCEvent::GetTrack gives back *VParticle. X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=7aad0c47882abec2d34b23d11dfb71c1bb2a3c7b MCEvent::GetTrack gives back *VParticle. Cast to *MCParticle needed --- diff --git a/ANALYSIS/AliAnalysisTaskMCParticleFilter.cxx b/ANALYSIS/AliAnalysisTaskMCParticleFilter.cxx index 5d5233a9790..2a13ecac2a0 100644 --- a/ANALYSIS/AliAnalysisTaskMCParticleFilter.cxx +++ b/ANALYSIS/AliAnalysisTaskMCParticleFilter.cxx @@ -247,7 +247,7 @@ void AliAnalysisTaskMCParticleFilter::UserExec(Option_t */*option*/) Int_t j=0; for (Int_t ip = 0; ip < np; ip++){ - AliMCParticle* mcpart = mcE->GetTrack(ip); + AliMCParticle* mcpart = (AliMCParticle*) mcE->GetTrack(ip); TParticle* part = mcpart->Particle(); Float_t xv = part->Vx(); Float_t yv = part->Vy(); @@ -265,11 +265,11 @@ void AliAnalysisTaskMCParticleFilter::UserExec(Option_t */*option*/) AliMCParticle* mother = mcpart; Int_t imo = mcpart->GetMother(); while((imo >= nprim) && (mother->GetUniqueID() == 4)) { - mother = mcE->GetTrack(imo); + mother = (AliMCParticle*) mcE->GetTrack(imo); imo = mother->GetMother(); } // Select according to pseudorapidity and production point of primary ancestor - if (imo < nprim && Select(mcE->GetTrack(imo)->Particle(), rv, zv))write = kTRUE; + if (imo < nprim && Select(((AliMCParticle*) mcE->GetTrack(imo))->Particle(), rv, zv))write = kTRUE; } else if (part->GetUniqueID() == 5) { // Now look for pair production Int_t imo = mcpart->GetMother(); @@ -278,10 +278,10 @@ void AliAnalysisTaskMCParticleFilter::UserExec(Option_t */*option*/) write = kTRUE; } else { // Check if the gamma comes from the decay chain of a primary particle - AliMCParticle* mother = mcE->GetTrack(imo); + AliMCParticle* mother = (AliMCParticle*) mcE->GetTrack(imo); imo = mother->GetMother(); while((imo >= nprim) && (mother->GetUniqueID() == 4)) { - mother = mcE->GetTrack(imo); + mother = (AliMCParticle*) mcE->GetTrack(imo); imo = mother->GetMother(); } // Select according to pseudorapidity and production point @@ -316,7 +316,7 @@ void AliAnalysisTaskMCParticleFilter::UserExec(Option_t */*option*/) static int iAll = 0; static int iCharm = 0; for (Int_t ip = 0; ip < np; ip++){ - AliMCParticle* mcpart = mcE->GetTrack(ip); + AliMCParticle* mcpart = (AliMCParticle*) mcE->GetTrack(ip); TParticle* part = mcpart->Particle(); // if((TMath::Abs(part->GetPdgCode())/400)==1){ diff --git a/FMD/analysis/AliFMDAnalysisTaskDndeta.cxx b/FMD/analysis/AliFMDAnalysisTaskDndeta.cxx index 668d705db9e..38e52777bdb 100644 --- a/FMD/analysis/AliFMDAnalysisTaskDndeta.cxx +++ b/FMD/analysis/AliFMDAnalysisTaskDndeta.cxx @@ -244,7 +244,7 @@ void AliFMDAnalysisTaskDndeta::ProcessPrimary() { nTracks = stack->GetNtrack(); for(Int_t i = 0 ;iGetTrack(i); + particle = (AliMCParticle*) mcEvent->GetTrack(i); if(!particle) continue; diff --git a/FMD/analysis/AliFMDAnalysisTaskGenerateCorrection.cxx b/FMD/analysis/AliFMDAnalysisTaskGenerateCorrection.cxx index d484e57eb83..0b7cb368173 100644 --- a/FMD/analysis/AliFMDAnalysisTaskGenerateCorrection.cxx +++ b/FMD/analysis/AliFMDAnalysisTaskGenerateCorrection.cxx @@ -192,7 +192,7 @@ void AliFMDAnalysisTaskGenerateCorrection::UserExec(Option_t */*option*/) // hTriggeredAll->Fill(vertexBin); for(Int_t i = 0 ;iGetTrack(i); + particle = (AliMCParticle*) mcevent->GetTrack(i); if(!particle) continue; diff --git a/FMD/analysis/AliFMDAnalysisTaskSharing.cxx b/FMD/analysis/AliFMDAnalysisTaskSharing.cxx index 6bf271a2933..c8d39a7ca46 100644 --- a/FMD/analysis/AliFMDAnalysisTaskSharing.cxx +++ b/FMD/analysis/AliFMDAnalysisTaskSharing.cxx @@ -388,7 +388,7 @@ void AliFMDAnalysisTaskSharing::ProcessPrimary() { Int_t nTracks = stack->GetNprimary(); TH1F* nMCevents = (TH1F*)fDiagList->FindObject("nMCEventsNoCuts"); for(Int_t i = 0 ;iGetTrack(i); + particle = (AliMCParticle*) mcEvent->GetTrack(i); if(!particle) continue; diff --git a/PWG1/AliAnalysisTaskV0QA.cxx b/PWG1/AliAnalysisTaskV0QA.cxx index 0bdfc456e81..d00c0540101 100644 --- a/PWG1/AliAnalysisTaskV0QA.cxx +++ b/PWG1/AliAnalysisTaskV0QA.cxx @@ -825,7 +825,7 @@ void AliAnalysisTaskV0QA::Exec(Option_t *) { TParticle* ePosTPC; mctruth->MCEvent()->GetParticleAndTR(posiGIndex,ePosTPC,clRefsP); - AliMCParticle *mcParticlePos = mctruth->MCEvent()->GetTrack(posiGIndex); + AliMCParticle *mcParticlePos = (AliMCParticle*) (mctruth->MCEvent()->GetTrack(posiGIndex)); if(!mcParticlePos) continue; Int_t counter; @@ -862,7 +862,7 @@ void AliAnalysisTaskV0QA::Exec(Option_t *) { TParticle* eNegTPC; mctruth->MCEvent()->GetParticleAndTR(elecGIndex,eNegTPC,clRefsN); - AliMCParticle *mcParticleNeg = mctruth->MCEvent()->GetTrack(elecGIndex); + AliMCParticle *mcParticleNeg = (AliMCParticle*) (mctruth->MCEvent()->GetTrack(elecGIndex)); if(!mcParticleNeg) continue; Int_t counterN; @@ -949,7 +949,7 @@ void AliAnalysisTaskV0QA::Exec(Option_t *) { TParticle* ePosTPC; mctruth->MCEvent()->GetParticleAndTR(piPosK0Index,ePosTPC,clRefsP); - AliMCParticle *mcParticlePos = mctruth->MCEvent()->GetTrack(piPosK0Index); + AliMCParticle *mcParticlePos = (AliMCParticle*) (mctruth->MCEvent()->GetTrack(piPosK0Index)); if(!mcParticlePos) continue; Int_t counter; @@ -984,7 +984,7 @@ void AliAnalysisTaskV0QA::Exec(Option_t *) { TParticle* eNegTPC; mctruth->MCEvent()->GetParticleAndTR(piNegK0Index,eNegTPC,clRefsN); - AliMCParticle *mcParticleNeg = mctruth->MCEvent()->GetTrack(piNegK0Index); + AliMCParticle *mcParticleNeg = (AliMCParticle*) (mctruth->MCEvent()->GetTrack(piNegK0Index)); if(!mcParticleNeg) continue; Int_t counterN; @@ -1071,7 +1071,7 @@ void AliAnalysisTaskV0QA::Exec(Option_t *) { TParticle* ePosTPC; mctruth->MCEvent()->GetParticleAndTR(pPosLIndex,ePosTPC,clRefsP); - AliMCParticle *mcParticlePos = mctruth->MCEvent()->GetTrack(pPosLIndex); + AliMCParticle *mcParticlePos = (AliMCParticle*) (mctruth->MCEvent()->GetTrack(pPosLIndex)); if(!mcParticlePos) continue; Int_t counter; @@ -1106,7 +1106,7 @@ void AliAnalysisTaskV0QA::Exec(Option_t *) { TParticle* eNegTPC; mctruth->MCEvent()->GetParticleAndTR(piNegLIndex,eNegTPC,clRefsN); - AliMCParticle *mcParticleNeg = mctruth->MCEvent()->GetTrack(piNegLIndex); + AliMCParticle *mcParticleNeg = (AliMCParticle*) (mctruth->MCEvent()->GetTrack(piNegLIndex)); if(!mcParticleNeg) continue; Int_t counterN; @@ -1198,7 +1198,7 @@ void AliAnalysisTaskV0QA::Exec(Option_t *) { TParticle* ePosTPC; mctruth->MCEvent()->GetParticleAndTR(piPosALIndex,ePosTPC,clRefsP); - AliMCParticle *mcParticlePos = mctruth->MCEvent()->GetTrack(piPosALIndex); + AliMCParticle *mcParticlePos = (AliMCParticle*) (mctruth->MCEvent()->GetTrack(piPosALIndex)); if(!mcParticlePos) continue; Int_t counter; @@ -1230,7 +1230,7 @@ void AliAnalysisTaskV0QA::Exec(Option_t *) { TParticle* eNegTPC; mctruth->MCEvent()->GetParticleAndTR(apNegALIndex,eNegTPC,clRefsN); - AliMCParticle *mcParticleNeg = mctruth->MCEvent()->GetTrack(apNegALIndex); + AliMCParticle *mcParticleNeg = (AliMCParticle*) (mctruth->MCEvent()->GetTrack(apNegALIndex)); if(!mcParticleNeg) continue; Int_t counterN; diff --git a/PWG1/AliMaterialBudget.cxx b/PWG1/AliMaterialBudget.cxx index 6152c964e2c..2c422fd9518 100644 --- a/PWG1/AliMaterialBudget.cxx +++ b/PWG1/AliMaterialBudget.cxx @@ -337,7 +337,7 @@ void AliMaterialBudget::ProcessMCInfo(){ // for (Int_t ipart=0;ipartGetParticleAndTR(ipart, particle, trefs); - AliMCParticle * pp = fMCinfo->GetTrack(ipart); + AliMCParticle * pp = (AliMCParticle*) fMCinfo->GetTrack(ipart); if (!pp) continue; if (particle->P()GetMass(); @@ -767,7 +767,7 @@ void AliMaterialBudget::FindPairs(AliESDEvent * event) { // HERE WE WILL PUT THE ACCESS TO THE MC TRACKS AND MATCH THESE !!!! // Int_t label0 = TMath::Abs(track0->GetLabel()); - AliMCParticle *mcParticle0 = fMCinfo->GetTrack(label0); + AliMCParticle *mcParticle0 = (AliMCParticle*) fMCinfo->GetTrack(label0); TParticle *particle0 = mcParticle0->Particle(); AliTrackReference *ref0 = GetFirstTPCTrackRef(mcParticle0); // get the first TPC track reference if (!ref0) continue; @@ -775,7 +775,7 @@ void AliMaterialBudget::FindPairs(AliESDEvent * event) { paramMC0 = MakeTrack(ref0, particle0); // Int_t label1 = TMath::Abs(track1->GetLabel()); - AliMCParticle *mcParticle1 = fMCinfo->GetTrack(label1); + AliMCParticle *mcParticle1 = (AliMCParticle*) fMCinfo->GetTrack(label1); TParticle *particle1 = mcParticle1->Particle(); AliTrackReference *ref1 = GetFirstTPCTrackRef(mcParticle1); // get the first TPC track reference if (!ref1) continue; diff --git a/PWG1/AliPerformanceEff.cxx b/PWG1/AliPerformanceEff.cxx index e157cb5a1c3..b947050cf28 100644 --- a/PWG1/AliPerformanceEff.cxx +++ b/PWG1/AliPerformanceEff.cxx @@ -659,7 +659,7 @@ Bool_t AliPerformanceEff::IsFindable(AliMCEvent *mcEvent, Int_t label) { if(!mcEvent) return kFALSE; - AliMCParticle *mcParticle = mcEvent->GetTrack(label); + AliMCParticle *mcParticle = (AliMCParticle*) mcEvent->GetTrack(label); if(!mcParticle) return kFALSE; Int_t counter; diff --git a/PWG1/AliPerformanceMC.cxx b/PWG1/AliPerformanceMC.cxx index 690a61a7276..44de992a506 100644 --- a/PWG1/AliPerformanceMC.cxx +++ b/PWG1/AliPerformanceMC.cxx @@ -240,7 +240,7 @@ void AliPerformanceMC::Exec(AliMCEvent* const mcEvent, AliESDEvent *const /*esdE if(!part) continue; if(!trefs) continue; - AliMCParticle *mcParticle = mcEvent->GetTrack(iPart); + AliMCParticle *mcParticle = (AliMCParticle*) mcEvent->GetTrack(iPart); if(!mcParticle) continue; TParticle *particle = mcParticle->Particle(); diff --git a/PWG1/AliPerformanceRes.cxx b/PWG1/AliPerformanceRes.cxx index c2f03c0b6b1..16d608523a8 100644 --- a/PWG1/AliPerformanceRes.cxx +++ b/PWG1/AliPerformanceRes.cxx @@ -512,7 +512,7 @@ void AliPerformanceRes::ProcessInnerTPC(AliMCEvent *const mcEvent, AliESDtrack * if(!mcEvent) return; Int_t label = TMath::Abs(esdTrack->GetLabel()); - AliMCParticle *mcParticle = mcEvent->GetTrack(label); + AliMCParticle *mcParticle = (AliMCParticle*) mcEvent->GetTrack(label); if(!mcParticle) return; // get the first TPC track reference @@ -611,7 +611,7 @@ void AliPerformanceRes::ProcessOuterTPC(AliMCEvent *const mcEvent, AliESDtrack * if(!mcEvent) return; Int_t label = TMath::Abs(esdTrack->GetLabel()); - AliMCParticle *mcParticle = mcEvent->GetTrack(label); + AliMCParticle *mcParticle = (AliMCParticle*) mcEvent->GetTrack(label); if(!mcParticle) return; // get the last TPC track reference diff --git a/PWG2/EVCHAR/AliAnalysisTaskSPDdNdEta.cxx b/PWG2/EVCHAR/AliAnalysisTaskSPDdNdEta.cxx index 347a5bd49f5..1cb46e32911 100644 --- a/PWG2/EVCHAR/AliAnalysisTaskSPDdNdEta.cxx +++ b/PWG2/EVCHAR/AliAnalysisTaskSPDdNdEta.cxx @@ -690,7 +690,7 @@ void AliAnalysisTaskSPDdNdEta::Exec(Option_t *) fHistoPt->Fill(ptgen[multMCCharged]); - AliMCParticle* mcpart = mcEvent->GetTrack(imc); + AliMCParticle* mcpart = (AliMCParticle*) mcEvent->GetTrack(imc); Int_t nref = mcpart->GetNumberOfTrackReferences(); // Detectable primaries diff --git a/PWG2/FLOW/AliFlowTasks/AliFlowEventSimpleMaker.cxx b/PWG2/FLOW/AliFlowTasks/AliFlowEventSimpleMaker.cxx index 89023cd8673..b4c426c941c 100644 --- a/PWG2/FLOW/AliFlowTasks/AliFlowEventSimpleMaker.cxx +++ b/PWG2/FLOW/AliFlowTasks/AliFlowEventSimpleMaker.cxx @@ -88,7 +88,7 @@ AliFlowEventSimple* AliFlowEventSimpleMaker::FillTracks(AliMCEvent* anInput, Ali //loop over tracks while (iGoodTracks < iN && itrkN < iNumberOfInputTracks) { //get input particle - AliMCParticle* pParticle = anInput->GetTrack(itrkN); + AliMCParticle* pParticle = (AliMCParticle*) anInput->GetTrack(itrkN); //make new AliFlowTrackSimple AliFlowTrackSimple* pTrack = new AliFlowTrackSimple(); pTrack->SetPt(pParticle->Pt() ); @@ -359,7 +359,7 @@ AliFlowEventSimple* AliFlowEventSimpleMaker::FillTracks(AliESDEvent* anInput, A //get Label Int_t iLabel = pParticle->GetLabel(); //match to mc particle - AliMCParticle* pMcParticle = anInputMc->GetTrack(TMath::Abs(iLabel)); + AliMCParticle* pMcParticle = (AliMCParticle*) anInputMc->GetTrack(TMath::Abs(iLabel)); //check if (TMath::Abs(pParticle->GetLabel())!=pMcParticle->Label()) cout<<"pParticle->GetLabel()!=pMcParticle->Label() "<GetLabel()<<" "<Label()<GetTrack(itrkN); //get input particle + AliMCParticle* pParticle = (AliMCParticle*) anInput->GetTrack(itrkN); //get input particle //cut on tracks if (TMath::Abs(pParticle->Eta()) < 0.9) { @@ -779,7 +779,7 @@ AliFlowEventSimple* AliFlowEventSimpleMaker::FillTracks(AliESDEvent* anInput, A //get Label Int_t iLabel = pParticle->GetLabel(); //match to mc particle - AliMCParticle* pMcParticle = anInputMc->GetTrack(TMath::Abs(iLabel)); + AliMCParticle* pMcParticle = (AliMCParticle*) anInputMc->GetTrack(TMath::Abs(iLabel)); //check if (TMath::Abs(pParticle->GetLabel())!=pMcParticle->Label()) cout<<"pParticle->GetLabel()!=pMcParticle->Label() "<GetLabel()<<" "<Label()<GetNprimary(); ipart++) { - mother = fMCEvent->GetTrack(ipart); + mother = (AliMCParticle*) fMCEvent->GetTrack(ipart); if (mother->Particle()->GetNDaughters() != 2) continue; i[0] = mother->Particle()->GetFirstDaughter(); i[1] = mother->Particle()->GetLastDaughter(); for (j = 0; j < 2; j++) { - daughter = fMCEvent->GetTrack(i[j]); + daughter = (AliMCParticle*) fMCEvent->GetTrack(i[j]); fDaughter[j].SetRef(daughter); fDaughter[j].SetParticle(daughter->Particle()); fDaughter[j].FindMotherPDG(stack); diff --git a/PWG2/RESONANCES/AliRsnAnalysisTrackEffSE.cxx b/PWG2/RESONANCES/AliRsnAnalysisTrackEffSE.cxx index f8906c8a5c0..75f3971746b 100644 --- a/PWG2/RESONANCES/AliRsnAnalysisTrackEffSE.cxx +++ b/PWG2/RESONANCES/AliRsnAnalysisTrackEffSE.cxx @@ -174,7 +174,7 @@ void AliRsnAnalysisTrackEffSE::ProcessEventMC() // and then we find its daughters and compute cuts on them for (ipart = 0; ipart < fMCEvent->GetNumberOfTracks(); ipart++) { - part = fMCEvent->GetTrack(ipart); + part = (AliMCParticle*) fMCEvent->GetTrack(ipart); fDaughter.SetRef(part); fDaughter.SetParticle(part->Particle()); diff --git a/PWG2/SPECTRA/AliProtonQAAnalysis.cxx b/PWG2/SPECTRA/AliProtonQAAnalysis.cxx index ef6692dca2e..4e88f05d3c7 100644 --- a/PWG2/SPECTRA/AliProtonQAAnalysis.cxx +++ b/PWG2/SPECTRA/AliProtonQAAnalysis.cxx @@ -3028,7 +3028,7 @@ void AliProtonQAAnalysis::RunReconstructionEfficiencyAnalysis(AliMCEvent *const TArrayI labelMCArray(nMCParticles); for (Int_t iTracks = 0; iTracks < mcEvent->GetNumberOfTracks(); iTracks++) { - AliMCParticle *mcTrack = mcEvent->GetTrack(iTracks); + AliMCParticle *mcTrack = (AliMCParticle*) mcEvent->GetTrack(iTracks); if (!mcTrack) { Printf("ERROR: Could not receive track %d (mc loop)", iTracks); continue; @@ -3096,7 +3096,7 @@ void AliProtonQAAnalysis::RunReconstructionEfficiencyAnalysis(AliMCEvent *const Int_t lPartMother = -1; Int_t motherPDGCode = -1; lPartMother = particle->GetFirstMother(); - AliMCParticle *mcMotherTrack = mcEvent->GetTrack(lPartMother); + AliMCParticle *mcMotherTrack = (AliMCParticle*) mcEvent->GetTrack(lPartMother); TParticle *motherParticle = mcMotherTrack->Particle(); if(motherParticle) motherPDGCode = motherParticle->GetPdgCode(); diff --git a/PWG3/hfe/AliAnalysisTaskHFE.cxx b/PWG3/hfe/AliAnalysisTaskHFE.cxx index 600784075a1..69a82024ec2 100644 --- a/PWG3/hfe/AliAnalysisTaskHFE.cxx +++ b/PWG3/hfe/AliAnalysisTaskHFE.cxx @@ -362,7 +362,7 @@ void AliAnalysisTaskHFE::Exec(Option_t *){ // Loop MC // for(Int_t imc = fMC->GetNumberOfTracks(); imc--;){ - mctrack = fMC->GetTrack(imc); + mctrack = (AliMCParticle*) fMC->GetTrack(imc); container[0] = mctrack->Pt(); container[1] = mctrack->Eta(); @@ -426,7 +426,7 @@ void AliAnalysisTaskHFE::Exec(Option_t *){ // Check if it is signal electrons - if(!(mctrack = fMC->GetTrack(TMath::Abs(track->GetLabel())))) continue; + if(!(mctrack = (AliMCParticle*) fMC->GetTrack(TMath::Abs(track->GetLabel())))) continue; container[3] = mctrack->Pt(); container[4] = mctrack->Eta(); diff --git a/PWG3/hfe/AliHFEpidBase.cxx b/PWG3/hfe/AliHFEpidBase.cxx index 87f2fe1628c..afb6117ce62 100644 --- a/PWG3/hfe/AliHFEpidBase.cxx +++ b/PWG3/hfe/AliHFEpidBase.cxx @@ -85,7 +85,7 @@ Int_t AliHFEpidBase::GetPdgCode(AliVParticle *track){ if(!fMCEvent) return 0; AliMCParticle *mctrack = 0x0; if(TString(track->IsA()->GetName()).CompareTo("AliESDtrack") == 0) - mctrack = fMCEvent->GetTrack(TMath::Abs((dynamic_cast(track))->GetLabel())); + mctrack = (AliMCParticle*) (fMCEvent->GetTrack(TMath::Abs((dynamic_cast(track))->GetLabel()))); else if(TString(track->IsA()->GetName()).CompareTo("AliMCParticle") == 0) mctrack = dynamic_cast(track); if(!mctrack) return 0; diff --git a/PWG3/muon/AliAnalysisTaskLinkToMC.cxx b/PWG3/muon/AliAnalysisTaskLinkToMC.cxx index ab63658ab8b..f4de8fddf10 100644 --- a/PWG3/muon/AliAnalysisTaskLinkToMC.cxx +++ b/PWG3/muon/AliAnalysisTaskLinkToMC.cxx @@ -521,7 +521,7 @@ void AliAnalysisTaskLinkToMC::FillHistsFromMC() for (Int_t i = 0; i < MCEvent()->GetNumberOfTracks(); i++) { - AliMCParticle* mcTrack = MCEvent()->GetTrack(i); + AliMCParticle* mcTrack = (AliMCParticle*) MCEvent()->GetTrack(i); // Select only reconstructible tracks to fill into findable hist. if (IsFindable(mcTrack)) diff --git a/PWG3/muon/AliCFMuonResTask1.cxx b/PWG3/muon/AliCFMuonResTask1.cxx index 356a6b3066d..807c0e2a63c 100644 --- a/PWG3/muon/AliCFMuonResTask1.cxx +++ b/PWG3/muon/AliCFMuonResTask1.cxx @@ -154,7 +154,7 @@ void AliCFMuonResTask1::UserExec(Option_t *) // loop on the MC event for (Int_t ipart=0; ipartGetNumberOfTracks(); ipart++) { - AliMCParticle *mcPart = fMCEvent->GetTrack(ipart); + AliMCParticle *mcPart = (AliMCParticle*) fMCEvent->GetTrack(ipart); TParticle *part = mcPart->Particle(); TParticle *part0 = mcPart->Particle(); diff --git a/STEER/AliMCEvent.cxx b/STEER/AliMCEvent.cxx index 286c9a96716..e7b687aec4a 100644 --- a/STEER/AliMCEvent.cxx +++ b/STEER/AliMCEvent.cxx @@ -43,7 +43,7 @@ Int_t AliMCEvent::fgkBgLabelOffset(10000000); AliMCEvent::AliMCEvent(): AliVEvent(), fStack(0), - fMCParticles(new TClonesArray("AliMCParticle",1000)), + fMCParticles(0), fMCParticleMap(0), fHeader(new AliHeader()), fTRBuffer(0), @@ -55,7 +55,8 @@ AliMCEvent::AliMCEvent(): fNparticles(-1), fSubsidiaryEvents(0), fPrimaryOffset(0), - fSecondaryOffset(0) + fSecondaryOffset(0), + fExternal(0) { // Default constructor } @@ -75,7 +76,8 @@ AliMCEvent::AliMCEvent(const AliMCEvent& mcEvnt) : fNparticles(mcEvnt.fNparticles), fSubsidiaryEvents(0), fPrimaryOffset(0), - fSecondaryOffset(0) + fSecondaryOffset(0), + fExternal(0) { // Copy constructor } @@ -100,6 +102,8 @@ void AliMCEvent::ConnectTreeE (TTree* tree) void AliMCEvent::ConnectTreeK (TTree* tree) { // Connect the kinematics tree to the stack + if (!fMCParticles) fMCParticles = new TClonesArray("AliMCParticle",1000); + // fStack = fHeader->Stack(); fStack->ConnectTree(tree); // @@ -454,12 +458,18 @@ void AliMCEvent::ReorderAndExpandTreeTR() fTreeTR = fTmpTreeTR; } -AliMCParticle* AliMCEvent::GetTrack(Int_t i) const +AliVParticle* AliMCEvent::GetTrack(Int_t i) const { // Get MC Particle i // + + if (fExternal) { + return ((AliVParticle*) (fMCParticles->At(i))); + } + // // Check first if this explicitely accesses the subsidiary event + if (i >= BgLabelOffset()) { if (fSubsidiaryEvents) { AliMCEvent* bgEvent = (AliMCEvent*) (fSubsidiaryEvents->At(1)); diff --git a/STEER/AliMCEvent.h b/STEER/AliMCEvent.h index 57ddc248993..aabdae66469 100644 --- a/STEER/AliMCEvent.h +++ b/STEER/AliMCEvent.h @@ -16,9 +16,11 @@ #include #include +#include #include #include "AliVHeader.h" +#include "AliVParticle.h" #include "AliMCParticle.h" class AliStack; @@ -63,7 +65,7 @@ public: virtual Int_t GetRunNumber() const {return 0;} - virtual UInt_t GetPeriodNumber() const {return 0;} + virtual UInt_t GetPeriodNumber() const {return 0;} virtual Double_t GetMagneticField() const {return 0.;} // Setters not needed @@ -73,10 +75,10 @@ public: virtual void SetTriggerMask(ULong64_t /*n*/) {;} virtual void SetTriggerCluster(UChar_t /*n*/) {;} - virtual UInt_t GetOrbitNumber() const {return 0;} - virtual UShort_t GetBunchCrossNumber() const {return 0;} + virtual UInt_t GetOrbitNumber() const {return 0;} + virtual UShort_t GetBunchCrossNumber() const {return 0;} - virtual UInt_t GetEventType() const {return 0;} + virtual UInt_t GetEventType() const {return 0;} virtual ULong64_t GetTriggerMask() const {return 0;} virtual UChar_t GetTriggerCluster() const {return 0;} @@ -87,7 +89,7 @@ public: virtual Double_t GetZDCEMEnergy(Int_t /*i*/) const {return 0.;} // Tracks - virtual AliMCParticle *GetTrack(Int_t i) const; + virtual AliVParticle *GetTrack(Int_t i) const; virtual Int_t GetNumberOfTracks() const {return fNparticles;} virtual Int_t GetNumberOfV0s() const {return -1;} virtual Int_t GetNumberOfCascades() const {return -1;} @@ -117,11 +119,16 @@ public: virtual Bool_t IsPhysicalPrimary(Int_t i); virtual Int_t BgLabelToIndex(Int_t label); static Int_t BgLabelOffset() {return fgkBgLabelOffset;} - + // External particle array + virtual void SetParticleArray(TClonesArray* mcParticles) + {fMCParticles = mcParticles; fNparticles = fMCParticles->GetEntries(); fExternal = kTRUE;} + + private: virtual void ReorderAndExpandTreeTR(); virtual Int_t FindIndexAndEvent(Int_t oldidx, AliMCEvent*& event) const; private: + // Stanndard implementation for ESD production AliStack *fStack; // Current pointer to stack TClonesArray *fMCParticles; // Pointer to list of particles TRefArray *fMCParticleMap; // Map of MC Particles @@ -136,6 +143,7 @@ private: TList *fSubsidiaryEvents; // List of possible subsidiary events (for example merged underlying event) Int_t fPrimaryOffset; // Offset for primaries Int_t fSecondaryOffset; // Offset for secondaries + Bool_t fExternal; // True if external particle array static Int_t fgkBgLabelOffset; // Standard branch name ClassDef(AliMCEvent, 1) // AliVEvent realisation for MC data }; diff --git a/TRD/qaRec/AliTRDcheckESD.cxx b/TRD/qaRec/AliTRDcheckESD.cxx index 2eff35ec794..ae890f9548d 100644 --- a/TRD/qaRec/AliTRDcheckESD.cxx +++ b/TRD/qaRec/AliTRDcheckESD.cxx @@ -203,7 +203,7 @@ void AliTRDcheckESD::Exec(Option_t *){ // read MC particle AliMCParticle *mcParticle = 0x0; - if(!(mcParticle = fMC->GetTrack(TMath::Abs(fLabel)))){ + if(!(mcParticle = (AliMCParticle*) fMC->GetTrack(TMath::Abs(fLabel)))){ AliWarning(Form("MC particle missing. Label[ %d].", fLabel)); continue; } diff --git a/TRD/qaRec/AliTRDinfoGen.cxx b/TRD/qaRec/AliTRDinfoGen.cxx index 7ca60dc935f..1e86e8f50cb 100644 --- a/TRD/qaRec/AliTRDinfoGen.cxx +++ b/TRD/qaRec/AliTRDinfoGen.cxx @@ -234,7 +234,7 @@ void AliTRDinfoGen::Exec(Option_t *){ continue; } AliMCParticle *mcParticle = 0x0; - if(!(mcParticle = fMC->GetTrack(alab))){ + if(!(mcParticle = (AliMCParticle*) fMC->GetTrack(alab))){ AliError(Form("MC particle label[%d] missing for Ev[%d] Trk[%d].", label, (Int_t)AliAnalysisManager::GetAnalysisManager()->GetCurrentEntry(), itrk)); continue; } @@ -329,7 +329,7 @@ void AliTRDinfoGen::Exec(Option_t *){ for(Int_t itk = 0; itk < nTracksMC; itk++){ if(trackMap[itk]) continue; - AliMCParticle *mcParticle = fMC->GetTrack(TMath::Abs(itk)); + AliMCParticle *mcParticle = (AliMCParticle*) fMC->GetTrack(TMath::Abs(itk)); Int_t fPdg = mcParticle->Particle()->GetPdgCode(); Int_t nRefs = mcParticle->GetNumberOfTrackReferences(); Int_t iref = 0; AliTrackReference *ref = 0x0;