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<TClonesArray*>(list->FindObject(fTracksName));
+ } else {
+ TList *list = InputEvent()->GetList();
+ TClonesArray *tcaTracks = dynamic_cast<TClonesArray*>(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<AliESDtrack*>(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<AliVTrack*>(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; iMu<fESD->GetNumberOfMuonTracks(); iMu++) {
AliESDMuonTrack* muonTrack = fESD->GetMuonTrack(iMu);
- if(muonTrack) {
+ if (muonTrack) {
if (IsGoodMUONtrack(*muonTrack)) nGoodMuons++;
}
}
// fill them into the mini event
for (Int_t iMu = 0; iMu<fESD->GetNumberOfMuonTracks(); 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));
}
}
{
// 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<TClonesArray*>(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<AliVTrack*>(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; iMu<fAOD->GetNumberOfTracks(); 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; iMu<fAOD->GetNumberOfTracks(); 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));
+ }
+ }
}
}
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();
bCountTrg = kTRUE;
if (pairing == kSameEvt) {
- fHPtAss->AddBinContent(bbin);
+ fHPtAss->Fill(ptb);
}
}
if (bCountTrg) {
{
// 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());
}
//________________________________________________________________________
//________________________________________________________________________
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;
}
class AliESDEvent;
class AliESDtrackCuts;
class AliESDMuonTrack;
+class AliAODTrack;
class AliEvtPoolManager;
public:
AliDhcTask();
AliDhcTask(const char *name);
- virtual ~AliDhcTask() {}
+ virtual ~AliDhcTask();
void SetCentBins(TAxis *bins) { fBCent=bins; }
void SetCentMethod(const char *name) { fCentMethod = name; }
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;
#include "AliESDEvent.h"
#include "AliAODEvent.h"
#include "AliESDMuonTrack.h"
+#include "AliAODTrack.h"
#include "AliESDVertex.h"
#include "AliAODVertex.h"
#include "AliCentrality.h"
void AliMuonEffMC::UserExec(Option_t *)
{
// Main loop, Called for each event
- fESD = dynamic_cast<AliESDEvent*>(InputEvent());
- if (!fESD)
+ Int_t ntrks = 0; // number of tracks in an event
+
+ if(((TString)InputEvent()->IsA()->GetName())=="AliAODEvent")
{
fAOD = dynamic_cast<AliAODEvent*>(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<AliESDEvent*>(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);
if(fIsMc)
{
- for (Int_t iTrack = 0; iTrack<fESD->GetNumberOfMuonTracks(); iTrack++)
+ for (Int_t iTrack = 0; iTrack<ntrks; iTrack++)
{
// loop on muon tracks
- AliESDMuonTrack* muonTrack = fESD->GetMuonTrack(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
fHMuonParGen->Fill(fillArrayParGen);
}
}
- }
+
PostData(1, fOutputList);
return;
}
// Draw result to the screen
// Called once at the end of the query
- fOutputList = dynamic_cast<TList*> (GetOutputData(1));
- if (!fOutputList) {
- AliError("Output list not available");
- return;
- }
}
//________________________________________________________________________
{
// 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();
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;
+}
class AliEvtPoolManager;
class AliMCEvent;
class AliESDMuonTrack;
+class AliAODTrack;
#include "AliAnalysisTaskSE.h"
protected:
Bool_t VertexOk(TObject* obj) const;
Bool_t IsGoodMUONtrack(AliESDMuonTrack &track);
+ Bool_t IsGoodMUONtrack(AliAODTrack &track);
private:
AliESDEvent *fESD; //! ESD object
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
AliMuonEffMC(const AliMuonEffMC&); // not implemented
AliMuonEffMC &operator=(const AliMuonEffMC&); // not implemented
- ClassDef(AliMuonEffMC, 1);
+ ClassDef(AliMuonEffMC, 2);
};
#endif