From: miweber Date: Mon, 28 Jan 2013 09:21:15 +0000 (+0000) Subject: update DHC task (Constantin Loizides ) X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=b673a08322086dacb015402e22ffc28dca7c2fb2;p=u%2Fmrichter%2FAliRoot.git update DHC task (Constantin Loizides ) --- diff --git a/PWGCF/Correlations/DPhi/FourierDecomposition/AliDhcTask.cxx b/PWGCF/Correlations/DPhi/FourierDecomposition/AliDhcTask.cxx index 5d0d9bbce2a..77aa89f1422 100644 --- a/PWGCF/Correlations/DPhi/FourierDecomposition/AliDhcTask.cxx +++ b/PWGCF/Correlations/DPhi/FourierDecomposition/AliDhcTask.cxx @@ -520,46 +520,43 @@ void AliDhcTask::GetESDTracks(MiniEvent* miniEvt) Int_t sign = esdtrack->Charge() > 0 ? 1 : -1; miniEvt->push_back(AliMiniTrack(pt, eta, phi, sign)); } - return; - } - - TList *list = InputEvent()->GetList(); - TClonesArray *tcaTracks = dynamic_cast(list->FindObject(fTracksName)); + } else { + TList *list = InputEvent()->GetList(); + TClonesArray *tcaTracks = dynamic_cast(list->FindObject(fTracksName)); - if(!tcaTracks){ - AliError("Ptr to tcaTracks zero"); - return; - } + if(!tcaTracks){ + AliError("Ptr to tcaTracks zero"); + return; + } - const Int_t ntracks = tcaTracks->GetEntries(); - if (miniEvt) - miniEvt->reserve(ntracks); - else { - AliError("Ptr to miniEvt zero"); - return; - } + const Int_t ntracks = tcaTracks->GetEntries(); + if (miniEvt) + miniEvt->reserve(ntracks); + else { + AliError("Ptr to miniEvt zero"); + return; + } - for(Int_t itrack = 0; itrack < ntracks; itrack++) { - AliVTrack *esdtrack = static_cast(tcaTracks->At(itrack)); - if(!esdtrack) { - AliError(Form("ERROR: Could not retrieve esdtrack %d",itrack)); - continue; + for (Int_t itrack = 0; itrack < ntracks; itrack++) { + AliVTrack *vtrack = static_cast(tcaTracks->At(itrack)); + if (!vtrack) { + AliError(Form("ERROR: Could not retrieve track %d",itrack)); + continue; + } + Double_t pt = vtrack->Pt(); + Double_t eta = vtrack->Eta(); + Double_t phi = vtrack->Phi(); + Int_t sign = vtrack->Charge() > 0 ? 1 : -1; + miniEvt->push_back(AliMiniTrack(pt, eta, phi, sign)); } - Double_t pt = esdtrack->Pt(); - Double_t eta = esdtrack->Eta(); - Double_t phi = esdtrack->Phi(); - Int_t sign = esdtrack->Charge() > 0 ? 1 : -1; - miniEvt->push_back(AliMiniTrack(pt, eta, phi, sign)); } if (fFillMuons) { - Double_t ptMu, etaMu, phiMu; - Int_t signMu; // count good muons Int_t nGoodMuons = 0; for (Int_t iMu = 0; iMuGetNumberOfMuonTracks(); iMu++) { AliESDMuonTrack* muonTrack = fESD->GetMuonTrack(iMu); - if(muonTrack) { + if (muonTrack) { if (IsGoodMUONtrack(*muonTrack)) nGoodMuons++; } } @@ -567,12 +564,13 @@ void AliDhcTask::GetESDTracks(MiniEvent* miniEvt) // fill them into the mini event for (Int_t iMu = 0; iMuGetNumberOfMuonTracks(); iMu++) { AliESDMuonTrack* muonTrack = fESD->GetMuonTrack(iMu); - if(muonTrack) { - if(!IsGoodMUONtrack(*muonTrack)) continue; - ptMu = muonTrack->Pt(); - etaMu = muonTrack->Eta(); - phiMu = muonTrack->Phi(); - signMu = muonTrack->Charge() > 0 ? 1 : -1; + if (muonTrack) { + if (!IsGoodMUONtrack(*muonTrack)) + continue; + Double_t ptMu = muonTrack->Pt(); + Double_t etaMu = muonTrack->Eta(); + Double_t phiMu = muonTrack->Phi(); + Double_t signMu = muonTrack->Charge() > 0 ? 1 : -1; miniEvt->push_back(AliMiniTrack(ptMu, etaMu, phiMu, signMu)); } } @@ -584,65 +582,122 @@ void AliDhcTask::GetAODTracks(MiniEvent* miniEvt) { // Loop twice: 1. Count sel. tracks. 2. Fill vector. - Int_t nTrax = fAOD->GetNumberOfTracks(); - Int_t nSelTrax = 0; + if (fTracksName.IsNull()) { + Int_t nTrax = fAOD->GetNumberOfTracks(); + Int_t nSelTrax = 0; - if (fVerbosity > 2) - AliInfo(Form("%d tracks in event",nTrax)); + if (fVerbosity > 2) + AliInfo(Form("%d tracks in event",nTrax)); - // Loop 1. - for (Int_t i = 0; i < nTrax; ++i) { - AliAODTrack* aodtrack = fAOD->GetTrack(i); - if (!aodtrack) { - AliError(Form("Couldn't get AOD track %d\n", i)); - continue; + // Loop 1. + for (Int_t i = 0; i < nTrax; ++i) { + AliAODTrack* aodtrack = fAOD->GetTrack(i); + if (!aodtrack) { + AliError(Form("Couldn't get AOD track %d\n", i)); + continue; + } + // See $ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C + UInt_t tpcOnly = 1 << 7; + Bool_t trkOK = aodtrack->TestFilterBit(tpcOnly); + if (!trkOK) + continue; + Double_t pt = aodtrack->Pt(); + Bool_t ptOK = pt >= fPtMin && pt < fPtMax; + if (!ptOK) + continue; + Double_t eta = aodtrack->Eta(); + if (TMath::Abs(eta) > fEtaMax) + continue; + nSelTrax++; } - // See $ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C - UInt_t tpcOnly = 1 << 7; - Bool_t trkOK = aodtrack->TestFilterBit(tpcOnly); - if (!trkOK) - continue; - Double_t pt = aodtrack->Pt(); - Bool_t ptOK = pt >= fPtMin && pt < fPtMax; - if (!ptOK) - continue; - Double_t eta = aodtrack->Eta(); - if (TMath::Abs(eta) > fEtaMax) - continue; - nSelTrax++; - } - if (miniEvt) - miniEvt->reserve(nSelTrax); - else { - AliError("!miniEvt"); - return; - } - - // Loop 2. - for (Int_t i = 0; i < nTrax; ++i) { - AliAODTrack* aodtrack = fAOD->GetTrack(i); - if (!aodtrack) { - AliError(Form("Couldn't get AOD track %d\n", i)); - continue; + if (miniEvt) + miniEvt->reserve(nSelTrax); + else { + AliError("!miniEvt"); + return; } + + // Loop 2. + for (Int_t i = 0; i < nTrax; ++i) { + AliAODTrack* aodtrack = fAOD->GetTrack(i); + if (!aodtrack) { + AliError(Form("Couldn't get AOD track %d\n", i)); + continue; + } - // See $ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C - UInt_t tpcOnly = 1 << 7; - Bool_t trkOK = aodtrack->TestFilterBit(tpcOnly); - if (!trkOK) - continue; - Double_t pt = aodtrack->Pt(); - Bool_t ptOK = pt >= fPtMin && pt < fPtMax; - if (!ptOK) - continue; - Double_t eta = aodtrack->Eta(); - if (TMath::Abs(eta) > fEtaMax) - continue; + // See $ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C + UInt_t tpcOnly = 1 << 7; + Bool_t trkOK = aodtrack->TestFilterBit(tpcOnly); + if (!trkOK) + continue; + Double_t pt = aodtrack->Pt(); + Bool_t ptOK = pt >= fPtMin && pt < fPtMax; + if (!ptOK) + continue; + Double_t eta = aodtrack->Eta(); + if (TMath::Abs(eta) > fEtaMax) + continue; + + Double_t phi = aodtrack->Phi(); + Int_t sign = aodtrack->Charge() > 0 ? 1 : -1; + miniEvt->push_back(AliMiniTrack(pt, eta, phi, sign)); + } + } else { + TList *list = InputEvent()->GetList(); + TClonesArray *tcaTracks = dynamic_cast(list->FindObject(fTracksName)); + + if (!tcaTracks){ + AliError("Ptr to tcaTracks zero"); + return; + } + + const Int_t ntracks = tcaTracks->GetEntries(); + if (miniEvt) + miniEvt->reserve(ntracks); + else { + AliError("Ptr to miniEvt zero"); + return; + } + + for (Int_t itrack = 0; itrack < ntracks; itrack++) { + AliVTrack *vtrack = static_cast(tcaTracks->At(itrack)); + if (!vtrack) { + AliError(Form("ERROR: Could not retrieve vtrack %d",itrack)); + continue; + } + Double_t pt = vtrack->Pt(); + Double_t eta = vtrack->Eta(); + Double_t phi = vtrack->Phi(); + Int_t sign = vtrack->Charge() > 0 ? 1 : -1; + miniEvt->push_back(AliMiniTrack(pt, eta, phi, sign)); + } + } - Double_t phi = aodtrack->Phi(); - Int_t sign = aodtrack->Charge() > 0 ? 1 : -1; - miniEvt->push_back(AliMiniTrack(pt, eta, phi, sign)); + if (fFillMuons) { + // count good muons + Int_t nGoodMuons = 0; + for (Int_t iMu = 0; iMuGetNumberOfTracks(); iMu++) { + AliAODTrack* muonTrack = fAOD->GetTrack(iMu); + if(muonTrack) { + if (IsGoodMUONtrack(*muonTrack)) + nGoodMuons++; + } + } + miniEvt->reserve(miniEvt->size()+nGoodMuons); + // fill them into the mini event + for (Int_t iMu = 0; iMuGetNumberOfTracks(); iMu++) { + AliAODTrack* muonTrack = fAOD->GetTrack(iMu); + if (muonTrack) { + if (!IsGoodMUONtrack(*muonTrack)) + continue; + Double_t ptMu = muonTrack->Pt(); + Double_t etaMu = muonTrack->Eta(); + Double_t phiMu = muonTrack->Phi(); + Double_t signMu = muonTrack->Charge() > 0 ? 1 : -1; + miniEvt->push_back(AliMiniTrack(ptMu, etaMu, phiMu, signMu)); + } + } } } @@ -687,8 +742,8 @@ Int_t AliDhcTask::Correlate(const MiniEvent &evt1, const MiniEvent &evt2, Int_t TH2 **hist = fHMs; if (pairing == kSameEvt) { hist = fHSs; - fHCent->AddBinContent(cbin); - fHZvtx->AddBinContent(zbin); + fHCent->Fill(fCentrality); + fHZvtx->Fill(fZVertex); } Int_t nZvtx = fHZvtx->GetNbinsX(); @@ -806,7 +861,7 @@ Int_t AliDhcTask::Correlate(const MiniEvent &evt1, const MiniEvent &evt2, Int_t bCountTrg = kTRUE; if (pairing == kSameEvt) { - fHPtAss->AddBinContent(bbin); + fHPtAss->Fill(ptb); } } if (bCountTrg) { @@ -826,12 +881,6 @@ void AliDhcTask::Terminate(Option_t *) { // Draw result to the screen // Called once at the end of the query - - delete fPoolMgr; - fHCent->SetEntries(fHCent->Integral()); - fHZvtx->SetEntries(fHZvtx->Integral()); - fHPtTrg->SetEntries(fHPtTrg->Integral()); - fHPtAss->SetEntries(fHPtAss->Integral()); } //________________________________________________________________________ @@ -877,15 +926,45 @@ Bool_t AliDhcTask::VertexOk(TObject* obj) const //________________________________________________________________________ Bool_t AliDhcTask::IsGoodMUONtrack(AliESDMuonTrack &track) { - // Applying track cuts for MUON tracks - if(!track.ContainTrackerData()) return kFALSE; - if(!track.ContainTriggerData()) return kFALSE; - Double_t thetaTrackAbsEnd = TMath::ATan(track.GetRAtAbsorberEnd()/505.) * TMath::RadToDeg(); - Double_t eta = track.Eta(); - if(!(thetaTrackAbsEnd >= 2. && thetaTrackAbsEnd <= 10. && eta >= -4. && eta <= -2.5)) return kFALSE; - if(track.GetMatchTrigger() <= 0) return kFALSE; - // if(track.Pt() <= 1.0) return kFALSE; - // if(track.GetNormalizedChi2() >= 4.0) return kFALSE; - - return kTRUE; + // Applying track cuts for MUON tracks + + if (!track.ContainTrackerData()) + return kFALSE; + if (!track.ContainTriggerData()) + return kFALSE; + Double_t thetaTrackAbsEnd = TMath::ATan(track.GetRAtAbsorberEnd()/505.) * TMath::RadToDeg(); + if ((thetaTrackAbsEnd < 2.) || (thetaTrackAbsEnd > 10.)) + return kFALSE; + Double_t eta = track.Eta(); + if ((eta < -4.) || (eta > -2.5)) + return kFALSE; + if (track.GetMatchTrigger() < 0.5) + return kFALSE; + return kTRUE; +} + +//________________________________________________________________________ +Bool_t AliDhcTask::IsGoodMUONtrack(AliAODTrack &track) +{ + // Applying track cuts for MUON tracks + + if (!track.IsMuonTrack()) + return kFALSE; + Double_t dThetaAbs = TMath::ATan(track.GetRAtAbsorberEnd()/505.)* TMath::RadToDeg(); + if ((dThetaAbs<2.) || (dThetaAbs>10.)) + return kFALSE; + Double_t dEta = track.Eta(); + if ((dEta<-4.) || (dEta>2.5)) + return kFALSE; + if (track.GetMatchTrigger()<0.5) + return kFALSE; + return kTRUE; +} + +//________________________________________________________________________ +AliDhcTask::~AliDhcTask() +{ + //Destructor + if (fPoolMgr) + delete fPoolMgr; } diff --git a/PWGCF/Correlations/DPhi/FourierDecomposition/AliDhcTask.h b/PWGCF/Correlations/DPhi/FourierDecomposition/AliDhcTask.h index b5f87013896..f887dacd2cd 100644 --- a/PWGCF/Correlations/DPhi/FourierDecomposition/AliDhcTask.h +++ b/PWGCF/Correlations/DPhi/FourierDecomposition/AliDhcTask.h @@ -21,6 +21,7 @@ class AliAODEvent; class AliESDEvent; class AliESDtrackCuts; class AliESDMuonTrack; +class AliAODTrack; class AliEvtPoolManager; @@ -28,7 +29,7 @@ class AliDhcTask : public AliAnalysisTaskSE { public: AliDhcTask(); AliDhcTask(const char *name); - virtual ~AliDhcTask() {} + virtual ~AliDhcTask(); void SetCentBins(TAxis *bins) { fBCent=bins; } void SetCentMethod(const char *name) { fCentMethod = name; } @@ -62,6 +63,7 @@ class AliDhcTask : public AliAnalysisTaskSE { void GetAODTracks(MiniEvent*); Bool_t VertexOk(TObject* obj) const; Bool_t IsGoodMUONtrack(AliESDMuonTrack &track); + Bool_t IsGoodMUONtrack(AliAODTrack &track); Double_t DeltaPhi(Double_t phia, Double_t phib, Double_t rangeMin = -TMath::Pi()/2, Double_t rangeMax = 3*TMath::Pi()/2) const; diff --git a/PWGCF/Correlations/DPhi/FourierDecomposition/AliMuonEffMC.cxx b/PWGCF/Correlations/DPhi/FourierDecomposition/AliMuonEffMC.cxx index 9636648dd69..75254976b4a 100644 --- a/PWGCF/Correlations/DPhi/FourierDecomposition/AliMuonEffMC.cxx +++ b/PWGCF/Correlations/DPhi/FourierDecomposition/AliMuonEffMC.cxx @@ -17,6 +17,7 @@ #include "AliESDEvent.h" #include "AliAODEvent.h" #include "AliESDMuonTrack.h" +#include "AliAODTrack.h" #include "AliESDVertex.h" #include "AliAODVertex.h" #include "AliCentrality.h" @@ -213,54 +214,53 @@ void AliMuonEffMC::UserCreateOutputObjects() void AliMuonEffMC::UserExec(Option_t *) { // Main loop, Called for each event - fESD = dynamic_cast(InputEvent()); - if (!fESD) + Int_t ntrks = 0; // number of tracks in an event + + if(((TString)InputEvent()->IsA()->GetName())=="AliAODEvent") { fAOD = dynamic_cast(InputEvent()); - } - - if (!fESD && !fAOD) + if (!fAOD) { AliError("AOD event not found. Nothing done!"); return; } + ntrks = fAOD->GetNTracks(); + } + else { - AliError("Neither fESD nor fAOD available"); - return; + fESD = dynamic_cast(InputEvent()); + if (!fESD) { AliError("ESD event not found. Nothing done!"); return; } + ntrks = fESD->GetNumberOfMuonTracks(); } fHEventStat->Fill(0.5); if(fIsMc) { fMC = MCEvent(); - if (!fMC) { - printf("ERROR: fMC not available\n"); - return; - } + if (!fMC) { AliError("MC event not avaliable."); return; } } - const AliESDVertex* vertex = fESD->GetPrimaryVertex(); - fZVertex = vertex->GetZ(); - if(fESD->GetCentrality()) fCentrality = fESD->GetCentrality()->GetCentralityPercentile("fCentralityEstimator"); - - // Fill Event histogram - fHEvt->Fill(fZVertex, fCentrality); - - Int_t iVerb = 0; - - // Centrality, vertex, other event variables... - if (!VertexOk(fESD)) { - if (iVerb>1) - AliInfo(Form("Event REJECTED. z = %.1f", fZVertex)); - return; + // Centrality, vertex, other event variables... + if(fAOD) + { + const AliAODVertex* vertex = fAOD->GetPrimaryVertex(); + fZVertex = vertex->GetZ(); + if(fAOD->GetCentrality()) fCentrality = fAOD->GetCentrality()->GetCentralityPercentile("fCentralityEstimator"); } + else if(fESD) + { + const AliESDVertex* vertex = fESD->GetPrimaryVertex(); + fZVertex = vertex->GetZ(); + if(fESD->GetCentrality()) fCentrality = fESD->GetCentrality()->GetCentralityPercentile("fCentralityEstimator"); + } - if (fCentrality > 100. || fCentrality < -1.5) { - if (iVerb>1) - AliInfo(Form("Event REJECTED. fCentrality = %.1f", fCentrality)); - return; - } + if ((fESD && !VertexOk(fESD)) || (fAOD && !VertexOk(fAOD))) { AliInfo(Form("Event REJECTED. z = %.1f", fZVertex)); return; } + if (fCentrality > 100. || fCentrality < -1.5) { AliInfo(Form("Event REJECTED. fCentrality = %.1f", fCentrality)); return; } - if(fCentrality < 0) fCentrality = 1.0; + if(fCentrality < 0) fCentrality = 100.5; + // Fill Event histogram + fHEvt->Fill(fZVertex, fCentrality); fHEventStat->Fill(1.5); - ULong64_t trigword=fESD->GetTriggerMask(); + ULong64_t trigword = 0; + if(fAOD) trigword=fAOD->GetTriggerMask(); + else if(fESD) trigword=fESD->GetTriggerMask(); if (trigword & 0x01) fHEventStat->Fill(17.5); if (trigword & 0x02) fHEventStat->Fill(3.5); @@ -280,72 +280,99 @@ void AliMuonEffMC::UserExec(Option_t *) if(fIsMc) { - for (Int_t iTrack = 0; iTrackGetNumberOfMuonTracks(); iTrack++) + for (Int_t iTrack = 0; iTrackGetMuonTrack(iTrack); - if(muonTrack) + Int_t label = 0; + Double_t trackpt = 0; + Double_t tracketa = 0; + Double_t trackphi = 0; + Double_t dcavalue = 0; + if(fAOD) { - if(!IsGoodMUONtrack(*muonTrack)) continue; - Double_t fillArrayDetRec[5] = { muonTrack->Eta(), muonTrack->Pt(), fCentrality, fZVertex, muonTrack->Phi() }; - fHMuonDetRec->Fill(fillArrayDetRec); - - Int_t label = TMath::Abs(muonTrack->GetLabel()); - AliMCParticle *McParticle = (AliMCParticle*)fMC->GetTrack(label); - if(TMath::Abs(McParticle->PdgCode()) != 13) + AliAODTrack* muonTrack = (AliAODTrack*)fAOD->GetTrack(iTrack); + if(muonTrack) { - fHEtcDetRec->Fill(fillArrayDetRec); - continue; + if(!(IsGoodMUONtrack(*muonTrack)) || !(muonTrack->IsMuonTrack())) continue; + trackpt = muonTrack->Pt(); + tracketa = muonTrack->Eta(); + trackphi = muonTrack->Phi(); + label = TMath::Abs(muonTrack->GetLabel()); } - Double_t fillArrayDetGen[5] = { McParticle->Eta(), McParticle->Pt(), fCentrality, fZVertex, McParticle->Phi() }; - fHMuonDetGen->Fill(fillArrayDetGen); + } + else if(fESD) + { + AliESDMuonTrack* muonTrack = fESD->GetMuonTrack(iTrack); + if(muonTrack) + { + if(!IsGoodMUONtrack(*muonTrack)) continue; + trackpt = muonTrack->Pt(); + tracketa = muonTrack->Eta(); + trackphi = muonTrack->Phi(); + label = TMath::Abs(muonTrack->GetLabel()); + dcavalue = muonTrack->GetDCA(); + } + } + + + Double_t fillArrayDetRec[5] = { tracketa, trackpt, fCentrality, fZVertex, trackphi }; + fHMuonDetRec->Fill(fillArrayDetRec); + + AliMCParticle *McParticle = (AliMCParticle*)fMC->GetTrack(label); + if(TMath::Abs(McParticle->PdgCode()) != 13) + { + fHEtcDetRec->Fill(fillArrayDetRec); + continue; + } + Double_t fillArrayDetGen[5] = { McParticle->Eta(), McParticle->Pt(), fCentrality, fZVertex, McParticle->Phi() }; + fHMuonDetGen->Fill(fillArrayDetGen); - if(fMDProcess) + if(fMDProcess) + { + if(McParticle->GetMother() > 0) { - if(McParticle->GetMother() > 0) - { - AliMCParticle *MotherParticle = (AliMCParticle*)fMC->GetTrack(McParticle->GetMother()); - Int_t motherlabel = TMath::Abs(MotherParticle->PdgCode()); + AliMCParticle *MotherParticle = (AliMCParticle*)fMC->GetTrack(McParticle->GetMother()); + Int_t motherlabel = TMath::Abs(MotherParticle->PdgCode()); - if(motherlabel==411 || motherlabel==413 || motherlabel==421 || motherlabel==423 || motherlabel==431 || motherlabel==433 || motherlabel==10413 || motherlabel==10411 || motherlabel==10423 || motherlabel==10421 || motherlabel==10433 || motherlabel==10431 || motherlabel==20413 || motherlabel==415 || motherlabel==20423 || motherlabel==425 || motherlabel==20433 || motherlabel==435) - { - fHMuMotherGenPt[2]->Fill(McParticle->Pt(), MotherParticle->Pt()); - fHMuMotherRecPt[2]->Fill(muonTrack->Pt(), MotherParticle->Pt()); - fHMuMotherGenPhi[2]->Fill(McParticle->Phi(), MotherParticle->Phi()); - fHMuMotherRecPhi[2]->Fill(muonTrack->Phi(), MotherParticle->Phi()); - fHMuMotherGenEta[2]->Fill(McParticle->Eta(), MotherParticle->Eta()); - fHMuMotherRecEta[2]->Fill(muonTrack->Eta(), MotherParticle->Eta()); - fHMuDCA[2]->Fill(muonTrack->GetDCA()); - } - else if(motherlabel==211) + if(motherlabel==411 || motherlabel==413 || motherlabel==421 || motherlabel==423 || motherlabel==431 || motherlabel==433 || motherlabel==10413 || motherlabel==10411 || motherlabel==10423 || motherlabel==10421 || motherlabel==10433 || motherlabel==10431 || motherlabel==20413 || motherlabel==415 || motherlabel==20423 || motherlabel==425 || motherlabel==20433 || motherlabel==435) + { + fHMuMotherGenPt[2]->Fill(McParticle->Pt(), MotherParticle->Pt()); + fHMuMotherRecPt[2]->Fill(trackpt, MotherParticle->Pt()); + fHMuMotherGenPhi[2]->Fill(McParticle->Phi(), MotherParticle->Phi()); + fHMuMotherRecPhi[2]->Fill(trackphi, MotherParticle->Phi()); + fHMuMotherGenEta[2]->Fill(McParticle->Eta(), MotherParticle->Eta()); + fHMuMotherRecEta[2]->Fill(tracketa, MotherParticle->Eta()); + if(fESD) fHMuDCA[2]->Fill(dcavalue); + } + else if(motherlabel==211) { fHMuMotherGenPt[0]->Fill(McParticle->Pt(), MotherParticle->Pt()); - fHMuMotherRecPt[0]->Fill(muonTrack->Pt(), MotherParticle->Pt()); + fHMuMotherRecPt[0]->Fill(trackpt, MotherParticle->Pt()); fHMuMotherGenPhi[0]->Fill(McParticle->Phi(), MotherParticle->Phi()); - fHMuMotherRecPhi[0]->Fill(muonTrack->Phi(), MotherParticle->Phi()); + fHMuMotherRecPhi[0]->Fill(trackphi, MotherParticle->Phi()); fHMuMotherGenEta[0]->Fill(McParticle->Eta(), MotherParticle->Eta()); - fHMuMotherRecEta[0]->Fill(muonTrack->Eta(), MotherParticle->Eta()); - fHMuDCA[0]->Fill(muonTrack->GetDCA()); + fHMuMotherRecEta[0]->Fill(tracketa, MotherParticle->Eta()); + if(fESD) fHMuDCA[0]->Fill(dcavalue); } else if(motherlabel==321) { fHMuMotherGenPt[1]->Fill(McParticle->Pt(), MotherParticle->Pt()); - fHMuMotherRecPt[1]->Fill(muonTrack->Pt(), MotherParticle->Pt()); + fHMuMotherRecPt[1]->Fill(trackpt, MotherParticle->Pt()); fHMuMotherGenPhi[1]->Fill(McParticle->Phi(), MotherParticle->Phi()); - fHMuMotherRecPhi[1]->Fill(muonTrack->Phi(), MotherParticle->Phi()); + fHMuMotherRecPhi[1]->Fill(trackphi, MotherParticle->Phi()); fHMuMotherGenEta[1]->Fill(McParticle->Eta(), MotherParticle->Eta()); - fHMuMotherRecEta[1]->Fill(muonTrack->Eta(), MotherParticle->Eta()); - fHMuDCA[1]->Fill(muonTrack->GetDCA()); + fHMuMotherRecEta[1]->Fill(tracketa, MotherParticle->Eta()); + if(fESD) fHMuDCA[1]->Fill(dcavalue); } else { fHMuMotherGenPt[3]->Fill(McParticle->Pt(), MotherParticle->Pt()); - fHMuMotherRecPt[3]->Fill(muonTrack->Pt(), MotherParticle->Pt()); + fHMuMotherRecPt[3]->Fill(trackpt, MotherParticle->Pt()); fHMuMotherGenPhi[3]->Fill(McParticle->Phi(), MotherParticle->Phi()); - fHMuMotherRecPhi[3]->Fill(muonTrack->Phi(), MotherParticle->Phi()); + fHMuMotherRecPhi[3]->Fill(trackphi, MotherParticle->Phi()); fHMuMotherGenEta[3]->Fill(McParticle->Eta(), MotherParticle->Eta()); - fHMuMotherRecEta[3]->Fill(muonTrack->Eta(), MotherParticle->Eta()); - fHMuDCA[3]->Fill(muonTrack->GetDCA()); + fHMuMotherRecEta[3]->Fill(tracketa, MotherParticle->Eta()); + if(fESD) fHMuDCA[3]->Fill(dcavalue); } } } // (mother hadron) : (daughter muon) QA @@ -361,7 +388,7 @@ void AliMuonEffMC::UserExec(Option_t *) fHMuonParGen->Fill(fillArrayParGen); } } - } + PostData(1, fOutputList); return; } @@ -372,11 +399,6 @@ void AliMuonEffMC::Terminate(Option_t *) // Draw result to the screen // Called once at the end of the query - fOutputList = dynamic_cast (GetOutputData(1)); - if (!fOutputList) { - AliError("Output list not available"); - return; - } } //________________________________________________________________________ @@ -425,7 +447,6 @@ Bool_t AliMuonEffMC::IsGoodMUONtrack(AliESDMuonTrack &track) { // Applying track cuts for MUON tracks if(!track.ContainTrackerData()) return kFALSE; - if(!track.ContainTriggerData()) return kFALSE; Double_t thetaTrackAbsEnd = TMath::ATan(track.GetRAtAbsorberEnd()/505.) * TMath::RadToDeg(); Double_t eta = track.Eta(); @@ -438,3 +459,20 @@ Bool_t AliMuonEffMC::IsGoodMUONtrack(AliESDMuonTrack &track) return kTRUE; } + +//________________________________________________________________________ +Bool_t AliMuonEffMC::IsGoodMUONtrack(AliAODTrack &track) +{ + if (!track.IsMuonTrack()) return kFALSE; + + Double_t dThetaAbs = TMath::ATan(track.GetRAtAbsorberEnd()/505.) + * TMath::RadToDeg(); + if ((dThetaAbs<2.) || (dThetaAbs>10.)) return kFALSE; + + Double_t dEta = track.Eta(); + if ((dEta<-4.) || (dEta>2.5)) return kFALSE; + + if (track.GetMatchTrigger()<0.5) return kFALSE; + + return kTRUE; +} diff --git a/PWGCF/Correlations/DPhi/FourierDecomposition/AliMuonEffMC.h b/PWGCF/Correlations/DPhi/FourierDecomposition/AliMuonEffMC.h index ee52235a967..63f127fc8e0 100644 --- a/PWGCF/Correlations/DPhi/FourierDecomposition/AliMuonEffMC.h +++ b/PWGCF/Correlations/DPhi/FourierDecomposition/AliMuonEffMC.h @@ -20,6 +20,7 @@ class AliESDtrackCuts; class AliEvtPoolManager; class AliMCEvent; class AliESDMuonTrack; +class AliAODTrack; #include "AliAnalysisTaskSE.h" @@ -45,6 +46,7 @@ class AliMuonEffMC : public AliAnalysisTaskSE { protected: Bool_t VertexOk(TObject* obj) const; Bool_t IsGoodMUONtrack(AliESDMuonTrack &track); + Bool_t IsGoodMUONtrack(AliAODTrack &track); private: AliESDEvent *fESD; //! ESD object @@ -56,15 +58,15 @@ class AliMuonEffMC : public AliAnalysisTaskSE { TH1D *fHEventStat; //! statistics histo TH2F *fHEvt; //! Cent, vtx - Bool_t fIsMc; //! - Bool_t fMDProcess; //! (mother hadron) : (daughter muon) QA + Bool_t fIsMc; // + Bool_t fMDProcess; // (mother hadron) : (daughter muon) QA - TString fCentralityEstimator;//! - Int_t fNEtaBins; //! number of eta bins - Int_t fNpTBins; //! number of p_T bins - Int_t fNCentBins; //! number of centrality bins - Int_t fNZvtxBins; //! number of Z-vertex bins - Int_t fNPhiBins; //! number of phi bins + TString fCentralityEstimator;// + Int_t fNEtaBins; // number of eta bins + Int_t fNpTBins; // number of p_T bins + Int_t fNCentBins; // number of centrality bins + Int_t fNZvtxBins; // number of Z-vertex bins + Int_t fNPhiBins; // number of phi bins THn *fHMuonParGen; //! truth muon track eta, p_T, Centrality, Z-vertex, phi THn *fHMuonDetGen; //! detector level muon track generated eta, p_T, Centrality, Z-vertex, phi @@ -82,7 +84,7 @@ class AliMuonEffMC : public AliAnalysisTaskSE { AliMuonEffMC(const AliMuonEffMC&); // not implemented AliMuonEffMC &operator=(const AliMuonEffMC&); // not implemented - ClassDef(AliMuonEffMC, 1); + ClassDef(AliMuonEffMC, 2); }; #endif