--- /dev/null
+AliAnalysisTaskMuonHadronCorrelations *AddAnalysisTaskMuonHadronCorrelations(const char *centMethod = "V0M") {
+
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+ if (!mgr) {
+ printf("Error in adding AnalysisTaskMuonHadronCorrelations: no Analysis Manager found!\n");
+ return NULL;
+ }
+
+ AliAnalysisTaskMuonHadronCorrelations *task = new AliAnalysisTaskMuonHadronCorrelations("AliAnalysisTaskMuonHadronCorrelations");
+
+ // Set analysis cuts
+ task->SetFilterBitCentralBarrel(7); // -> 128
+ task->SetMaxEtaCentralBarrel(1.0);
+ task->SetTriggerMatchLevelMuon(1);
+
+ const Int_t nBinCent = 4;
+ Double_t centLimits[nBinCent+1] = {0., 20., 40, 60., 100.};
+ task->SetCentBinning(nBinCent, centLimits);
+
+ task->SetCentMethod(centMethod);
+
+ const Int_t nBinPt = 3;
+ Double_t ptLimits[nBinPt+1] = {0., 1., 2., 4.};
+ task->SetPtBinning(nBinPt, ptLimits);
+
+ mgr->AddTask(task);
+
+ // create output container
+ AliAnalysisDataContainer *output = mgr->CreateContainer("MuonHadronCorrHistos", TList::Class(), AliAnalysisManager::kOutputContainer,
+ Form("%s:MuonHadronCorrelations_%s", AliAnalysisManager::GetCommonFileName(), centMethod));
+
+ // finaly connect input and output
+ mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
+ mgr->ConnectOutput(task, 1, output);
+
+ return task;
+}
+
}
}
fHistNTracksCB_vs_NTracksMA[iCent] = NULL;
+ fHistNTracksCB_vs_NTracksMAmixed[iCent] = NULL;
+ fHistSingleMuonsEtaVsPt[iCent] = NULL;
+ fHistSingleMuonsEtaVsRAbs[iCent] = NULL;
}
}
}
}
fHistNTracksCB_vs_NTracksMA[iCent] = NULL;
+ fHistNTracksCB_vs_NTracksMAmixed[iCent] = NULL;
+ fHistSingleMuonsEtaVsPt[iCent] = NULL;
+ fHistSingleMuonsEtaVsRAbs[iCent] = NULL;
}
// Define input and output slots here
fHistNTracksCB_vs_NTracksMA[iCent] = new TH2D(Form("fHistNTracksCB_vs_NTracksMA_Cent%02d",iCent),
Form("%d-%d %%",Int_t(fCentAxis->GetBinLowEdge(iCent+1)),Int_t(fCentAxis->GetBinUpEdge(iCent+1))),
- 100, 0, 1000, 100, 0, 100);
+ 100, 0, 500, 20, 0, 20);
fHistNTracksCB_vs_NTracksMA[iCent] -> SetXTitle("N_{tracks} Central Barrel");
fHistNTracksCB_vs_NTracksMA[iCent] -> SetYTitle("N_{tracks} Muon Arm");
-
fHistNTracksCB_vs_NTracksMA[iCent] -> Sumw2();
+ fHistNTracksCB_vs_NTracksMAmixed[iCent] = new TH2D(Form("fHistNTracksCB_vs_NTracksMAmixed_Cent%02d",iCent),
+ Form("%d-%d %% MIXED",Int_t(fCentAxis->GetBinLowEdge(iCent+1)),Int_t(fCentAxis->GetBinUpEdge(iCent+1))),
+ 100, 0, 500, 20, 0, 20);
+ fHistNTracksCB_vs_NTracksMAmixed[iCent] -> SetXTitle("N_{tracks} Central Barrel");
+ fHistNTracksCB_vs_NTracksMAmixed[iCent] -> SetYTitle("N_{tracks} Muon Arm");
+ fHistNTracksCB_vs_NTracksMAmixed[iCent] -> Sumw2();
+
fOutputList -> Add(fHistNTracksCB_vs_NTracksMA[iCent]);
+ fOutputList -> Add(fHistNTracksCB_vs_NTracksMAmixed[iCent]);
+
+ fHistSingleMuonsEtaVsPt[iCent] = new TH2D(Form("fHistSingleMuonsEtaVsPt_Cent%02d",iCent),
+ "#eta vs p_{T} for single muons",
+ 100, -4.5, -2., 100, 0., 10.);
+ fOutputList->Add(fHistSingleMuonsEtaVsPt[iCent]);
+ fHistSingleMuonsEtaVsRAbs[iCent] = new TH2D(Form("fHistSingleMuonsEtaVsRAbs_Cent%02d",iCent),
+ "#eta vs R_{Abs} for single muons",
+ 100, -4.5, -2., 100, 0, 100);
+ fOutputList->Add(fHistSingleMuonsEtaVsRAbs[iCent]);
}
Double_t zVtx = vertex->GetZ();
if (TMath::Abs(zVtx) > 10.) return;
- TObjArray *tracksMuonArm = GetAcceptedTracksMuonArm(fAOD);
+ TObjArray *tracksMuonArm = GetAcceptedTracksMuonArm(fAOD,centBin);
if (tracksMuonArm->GetEntriesFast() == 0) {
delete tracksMuonArm;
return;
//pool->PrintInfo();
if (pool->IsReady() || pool->NTracksInPool() > 2000 || pool->GetCurrentNEvents() >= 5)
for (Int_t jMix=0; jMix<pool->GetCurrentNEvents(); jMix++) {
+ TObjArray *mixedTracks = pool->GetEvent(jMix);
+ fHistNTracksCB_vs_NTracksMAmixed[centBin]->Fill(mixedTracks->GetEntriesFast(), tracksMuonArm->GetEntriesFast());
for (Int_t iTrMA=0; iTrMA<tracksMuonArm->GetEntriesFast(); iTrMA++) {
fTrackMA = (AliAODTrack*) tracksMuonArm->At(iTrMA);
- TObjArray *mixedTracks = pool->GetEvent(jMix);
for (Int_t iTrCB=0; iTrCB<mixedTracks->GetEntriesFast(); iTrCB++) {
fTrackCB = (AliAODTrack*) mixedTracks -> At(iTrCB);
FillHistograms(centBin, kMixedEvent);
//====================================================================================================================================================
-TObjArray* AliAnalysisTaskMuonHadronCorrelations::GetAcceptedTracksMuonArm(AliAODEvent *aodEvent) {
+TObjArray* AliAnalysisTaskMuonHadronCorrelations::GetAcceptedTracksMuonArm(AliAODEvent *aodEvent, Int_t centBin) {
// fills the array of muon tracks that pass the cuts
for (Int_t iTrack=0; iTrack<nTracks; iTrack++) {
track = aodEvent->GetTrack(iTrack);
if (track->IsMuonTrack() && track->GetMatchTrigger()>=fTriggerMatchLevelMuon) {
- tracks->Add(new AliAODTrack(*track));
+ if (track->Chi2perNDF() < 5.) {
+ // histos
+ fHistSingleMuonsEtaVsPt[centBin]->Fill(track->Eta(),track->Pt());
+ fHistSingleMuonsEtaVsRAbs[centBin]->Fill(track->Eta(),track->GetRAtAbsorberEnd());
+ if (track->Eta() > -4. && track->Eta() < -2.5) {
+ Double_t rabs = track->GetRAtAbsorberEnd();
+ if (rabs > 17.6 && rabs < 89.5) {
+ tracks->Add(new AliAODTrack(*track));
+ }
+ }
+ }
}
}
Double_t GetITSMultiplicity();
Bool_t IsTriggerFired();
TObjArray* GetAcceptedTracksCentralBarrel(AliAODEvent *aodEvent);
- TObjArray* GetAcceptedTracksMuonArm(AliAODEvent *aodEvent);
+ TObjArray* GetAcceptedTracksMuonArm(AliAODEvent *aodEvent, Int_t centBin);
void SetPtBinning(Int_t nBins, Double_t *limits);
void SetCentBinning(Int_t nBins, Double_t *limits);
void SetCentMethod(const Char_t *method) { fCentMethod = method; }
TH1D *fHistDeltaPhi[fNMaxBinsCentrality][fNMaxBinsPt][fNMaxBinsPt]; //!
TH1D *fHistDeltaPhiMix[fNMaxBinsCentrality][fNMaxBinsPt][fNMaxBinsPt]; //!
TH2D *fHistNTracksCB_vs_NTracksMA[fNMaxBinsCentrality]; //!
+ TH2D *fHistNTracksCB_vs_NTracksMAmixed[fNMaxBinsCentrality]; //!
TH1D *fHistV0Multiplicity; //!
TH1D *fHistITSMultiplicity; //!
TH1D *fHistCentrality; //!
+ TH2D *fHistSingleMuonsEtaVsPt[fNMaxBinsCentrality]; //!
+ TH2D *fHistSingleMuonsEtaVsRAbs[fNMaxBinsCentrality]; //!
+
TString fCentMethod;
TList *fOutputList; //!
// AddTaskPhysicsSelection(0);
mgr->AddStatisticsTask(AliVEvent::kAny);
- // -------------------------------
- // MUON TRACK CUTS CONFIGURATION
- // -------------------------------
-
- gROOT->LoadMacro("AliAnalysisTaskMuonHadronCorrelations.cxx++g");
- AliAnalysisTaskMuonHadronCorrelations *task = new AliAnalysisTaskMuonHadronCorrelations("AliAnalysisTaskMuonHadronCorrelations");
-
- // Set analysis cuts
- task->SetFilterBitCentralBarrel(7); // -> 128
- task->SetMaxEtaCentralBarrel(1.0);
- task->SetTriggerMatchLevelMuon(1);
-
- const Int_t nBinCent = 4;
- Double_t centLimits[nBinCent+1] = {0., 20., 40, 60., 100.};
- task->SetCentBinning(nBinCent, centLimits);
+ gROOT->LoadMacro("AddAnalysisTaskMuonHadronCorrelations.C");
+ AddAnalysisTaskMuonHadronCorrelations();
- task->SetCentMethod(centMethod);
-
- const Int_t nBinPt = 3;
- Double_t ptLimits[nBinPt+1] = {0., 1., 2., 4.};
- task->SetPtBinning(nBinPt, ptLimits);
-
- mgr->AddTask(task);
-
- // create output container
- AliAnalysisDataContainer *output1 = mgr->CreateContainer("list", TList::Class(), AliAnalysisManager::kOutputContainer, "MuonHadronCorrelations.root");
-
- // finaly connect input and output
- mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
- mgr->ConnectOutput(task, 1, output1);
-
TStopwatch timer;
timer.Start();
// -------------------------------