1 //====================================================================================================================================================
3 // Class for the analysis of the ALICE muon forward tracks (MUON + MFT)
5 // Contact author: antonio.uras@cern.ch
7 //====================================================================================================================================================
10 #include "TClonesArray.h"
11 #include "AliMuonForwardTrack.h"
12 #include "AliMuonForwardTrackPair.h"
18 #include "TParticle.h"
19 #include "AliMUONTrackParam.h"
20 #include "AliMUONTrackExtrap.h"
21 #include "TGeoManager.h"
23 #include "TLorentzVector.h"
24 #include "TDatabasePDG.h"
26 #include "AliMuonForwardTrackAnalysis.h"
28 ClassImp(AliMuonForwardTrackAnalysis)
30 //====================================================================================================================================================
32 AliMuonForwardTrackAnalysis::AliMuonForwardTrackAnalysis():
36 fInputTreeWithBranson(0x0),
37 fInputTreeWithoutBranson(0x0),
38 fMuonForwardTracksWithBranson(0),
39 fMuonForwardTrackPairsWithBranson(0),
40 fMuonForwardTracksWithoutBranson(0),
41 fMuonForwardTrackPairsWithoutBranson(0),
42 fMFTTrackWithBranson(0),
43 fMFTTrackWithoutBranson(0),
45 fMFTTrackPairWithBranson(0),
46 fMFTTrackPairWithoutBranson(0),
53 fNTracksAnalyzedOfEvent(0),
56 fNPairsAnalyzedOfEvent(0),
57 fHistOffsetSingleMuonsX(0x0),
58 fHistOffsetSingleMuonsY(0x0),
59 fHistOffsetSingleMuons(0x0),
60 fHistWOffsetSingleMuons(0x0),
61 fHistErrorSingleMuonsX(0x0),
62 fHistErrorSingleMuonsY(0x0),
63 fHistSingleMuonsPtRapidity(0x0),
64 fHistSingleMuonsOffsetChi2(0x0),
65 fGraphSingleMuonsOffsetChi2(0x0),
66 fHistRapidityPtMuonPairsMC(0x0),
74 fSingleMuonAnalysis(1),
84 fMaxNWrongClustersMC(999),
86 fUseBransonForCut(kFALSE),
87 fUseBransonForKinematics(kFALSE),
88 fCutOnOffsetChi2(kFALSE),
96 // default constructor
98 for (Int_t iPtBin=0; iPtBin<fNMaxPtBinsDimuons+1; iPtBin++) {
99 fHistWOffsetMuonPairs[iPtBin] = NULL;
100 fHistMassMuonPairs[iPtBin] = NULL;
101 fHistMassMuonPairsWithoutMFT[iPtBin] = NULL;
102 fHistMassMuonPairsMC[iPtBin] = NULL;
107 //====================================================================================================================================================
109 Bool_t AliMuonForwardTrackAnalysis::Init(Char_t *inputFileName) {
111 fPtAxisDimuons = new TAxis(fNPtDimuBins, fPtDimuMin, fPtDimuMax);
115 TFile *inputFile = new TFile(Form("%s/%s",fInputDir.Data(),inputFileName));
116 if (!inputFile || !inputFile->IsOpen()) {
117 AliError(Form("Error opening file %s", inputFileName));
120 fInputTreeWithBranson = (TTree*) inputFile->Get("AliMuonForwardTracksWithBranson");
121 if (!fInputTreeWithBranson) {
122 AliError("Error reading input tree");
125 fInputTreeWithoutBranson = (TTree*) inputFile->Get("AliMuonForwardTracksWithoutBranson");
126 if (!fInputTreeWithoutBranson) {
127 AliError("Error reading input tree");
131 if (fFirstEvent<0 || fLastEvent<0 || fFirstEvent>fLastEvent || fFirstEvent>=fInputTreeWithBranson->GetEntries()) {
133 fLastEvent = fInputTreeWithBranson->GetEntries()-1;
136 fLastEvent = TMath::Min(fLastEvent, Int_t(fInputTreeWithBranson->GetEntries()-1));
139 AliInfo(Form("Analysing events %d to %d", fFirstEvent, fLastEvent));
141 fMuonForwardTracksWithBranson = new TClonesArray("AliMuonForwardTrack");
142 fInputTreeWithBranson->SetBranchAddress("tracks", &fMuonForwardTracksWithBranson);
144 fMuonForwardTracksWithoutBranson = new TClonesArray("AliMuonForwardTrack");
145 fInputTreeWithoutBranson->SetBranchAddress("tracks", &fMuonForwardTracksWithoutBranson);
147 TGeoManager::Import(Form("%s/geometry.root",fInputDir.Data()));
149 AliMUONTrackExtrap::SetField();
151 fMuonForwardTrackPairsWithBranson = new TClonesArray("AliMuonForwardTrackPair");
152 fMuonForwardTrackPairsWithoutBranson = new TClonesArray("AliMuonForwardTrackPair");
158 //====================================================================================================================================================
160 Bool_t AliMuonForwardTrackAnalysis::LoadNextEvent() {
162 if (fEv>fLastEvent) return kFALSE;
163 if (fEv<fFirstEvent) { fEv++; return kTRUE; }
164 fMuonForwardTracksWithBranson -> Delete();
165 fMuonForwardTracksWithoutBranson -> Delete();
166 fInputTreeWithBranson->GetEvent(fEv);
167 fInputTreeWithoutBranson->GetEvent(fEv);
168 AliInfo(Form("**** analyzing event # %4d (%3d tracks) ****", fEv, fMuonForwardTracksWithBranson->GetEntries()));
170 fPrimaryVtxX = gRandom->Gaus(0., fXVertResMC);
171 fPrimaryVtxY = gRandom->Gaus(0., fYVertResMC);
172 fPrimaryVtxZ = gRandom->Gaus(0., fZVertResMC);
174 if (fSingleMuonAnalysis) {
175 fNTracksAnalyzedOfEvent = 0;
176 fNTracksOfEvent = fMuonForwardTracksWithBranson->GetEntries();
177 while (AnalyzeSingleMuon()) continue;
180 if (fMuonPairAnalysis) {
181 if (fMuonForwardTrackPairsWithBranson) {
182 fMuonForwardTrackPairsWithBranson->Delete();
183 fMuonForwardTrackPairsWithoutBranson->Delete();
186 fNPairsAnalyzedOfEvent = 0;
187 fNPairsOfEvent = fMuonForwardTrackPairsWithBranson->GetEntries();
188 while (AnalyzeMuonPair()) continue;
197 //====================================================================================================================================================
199 Bool_t AliMuonForwardTrackAnalysis::AnalyzeSingleMuon() {
201 if (fNTracksAnalyzedOfEvent>=fNTracksOfEvent) return kFALSE;
203 fMFTTrackWithBranson = (AliMuonForwardTrack*) fMuonForwardTracksWithBranson->At(fNTracksAnalyzedOfEvent);
204 fMFTTrackWithoutBranson = (AliMuonForwardTrack*) fMuonForwardTracksWithoutBranson->At(fNTracksAnalyzedOfEvent);
206 fNTracksAnalyzedOfEvent++;
208 Bool_t passedCut = kFALSE;
209 if (fUseBransonForCut) passedCut = PassedCutSingleMuon(fMFTTrackWithBranson);
210 else passedCut = PassedCutSingleMuon(fMFTTrackWithoutBranson);
211 if (!passedCut) return kTRUE;
213 if (fUseBransonForKinematics) fMFTTrack = fMFTTrackWithBranson;
214 else fMFTTrack = fMFTTrackWithoutBranson;
215 if (fMatchTrigger && !fMFTTrack->GetMatchTrigger()) return kTRUE;
216 fMCRefTrack = fMFTTrack->GetMCTrackRef();
218 if (!fMCRefTrack) return kTRUE;
219 if (fMFTTrack->GetNWrongClustersMC()>fMaxNWrongClustersMC) return kTRUE;
221 AliMUONTrackParam *param = fMFTTrack->GetTrackParamAtMFTCluster(0);
222 AliMUONTrackExtrap::ExtrapToZCov(param, fPrimaryVtxZ);
225 Double_t mMu = TDatabasePDG::Instance()->GetParticle("mu-")->Mass();
226 Double_t energy = TMath::Sqrt(param->P()*param->P() + mMu*mMu);
227 pMu.SetPxPyPzE(param->Px(), param->Py(), param->Pz(), energy);
230 cov = param->GetCovariances();
232 fHistErrorSingleMuonsX -> Fill(1.e4*TMath::Sqrt(cov(0,0)));
233 fHistErrorSingleMuonsY -> Fill(1.e4*TMath::Sqrt(cov(2,2)));
235 Double_t dX = fMFTTrack->GetOffsetX(fPrimaryVtxX, fPrimaryVtxZ);
236 Double_t dY = fMFTTrack->GetOffsetY(fPrimaryVtxY, fPrimaryVtxZ);
238 Double_t offset = fMFTTrack->GetOffset(fPrimaryVtxX, fPrimaryVtxY, fPrimaryVtxZ);
239 Double_t weightedOffset = fMFTTrack->GetWeightedOffset(fPrimaryVtxX, fPrimaryVtxY, fPrimaryVtxZ);
241 // AliDebug(2, Form("pdg code = %d\n", fMCRefTrack->GetPdgCode()));
243 fHistOffsetSingleMuonsX -> Fill(1.e4*dX);
244 fHistOffsetSingleMuonsY -> Fill(1.e4*dY);
246 fHistSingleMuonsPtRapidity -> Fill(pMu.Rapidity(), pMu.Pt());
247 fHistOffsetSingleMuons -> Fill(1.e4*offset);
248 fHistWOffsetSingleMuons -> Fill(weightedOffset);
249 Double_t chi2OverNdf = fMFTTrack->GetGlobalChi2()/Double_t(fMFTTrack->GetNMFTClusters()+fMFTTrack->GetNMUONClusters());
250 fHistSingleMuonsOffsetChi2 -> Fill(1.e4*offset, chi2OverNdf);
251 fGraphSingleMuonsOffsetChi2 -> SetPoint(fGraphSingleMuonsOffsetChi2->GetN(),1.e4*offset, chi2OverNdf);
259 //====================================================================================================================================================
261 Bool_t AliMuonForwardTrackAnalysis::AnalyzeMuonPair() {
263 if (fNPairsAnalyzedOfEvent>=fNPairsOfEvent) return kFALSE;
265 fMFTTrackPairWithBranson = (AliMuonForwardTrackPair*) fMuonForwardTrackPairsWithBranson->At(fNPairsAnalyzedOfEvent);
266 fMFTTrackPairWithoutBranson = (AliMuonForwardTrackPair*) fMuonForwardTrackPairsWithoutBranson->At(fNPairsAnalyzedOfEvent);
268 fNPairsAnalyzedOfEvent++;
270 Bool_t passedCut = kFALSE;
271 if (fUseBransonForCut) passedCut = PassedCutMuonPair(fMFTTrackPairWithBranson);
272 else passedCut = PassedCutMuonPair(fMFTTrackPairWithoutBranson);
274 if (!passedCut) return kTRUE;
276 if (fUseBransonForKinematics) fMFTTrackPair = fMFTTrackPairWithBranson;
277 else fMFTTrackPair = fMFTTrackPairWithoutBranson;
279 if ( fMFTTrackPair->GetTrack(0)->GetNWrongClustersMC()>fMaxNWrongClustersMC ||
280 fMFTTrackPair->GetTrack(1)->GetNWrongClustersMC()>fMaxNWrongClustersMC ) return kTRUE;
282 if (fOption==kResonanceOnly && !fMFTTrackPair->IsResonance()) return kTRUE;
284 Int_t ptBin = fPtAxisDimuons->FindBin(fMFTTrackPair->GetPtMC());
286 if (1<=ptBin && ptBin<=fNPtDimuBins) {
287 fHistMassMuonPairs[ptBin] -> Fill(fMFTTrackPair->GetMass(fPrimaryVtxZ));
288 fHistWOffsetMuonPairs[ptBin] -> Fill(fMFTTrackPair->GetWeightedOffset(fPrimaryVtxX, fPrimaryVtxY, fPrimaryVtxZ));
289 fHistMassMuonPairsWithoutMFT[ptBin] -> Fill(fMFTTrackPair->GetMassWithoutMFT(fPrimaryVtxX, fPrimaryVtxY, fPrimaryVtxZ));
290 fHistMassMuonPairsMC[ptBin] -> Fill(fMFTTrackPair->GetMassMC());
292 fHistMassMuonPairs[0] -> Fill(fMFTTrackPair->GetMass(fPrimaryVtxZ));
293 fHistWOffsetMuonPairs[0] -> Fill(fMFTTrackPair->GetWeightedOffset(fPrimaryVtxX, fPrimaryVtxY, fPrimaryVtxZ));
294 fHistMassMuonPairsWithoutMFT[0] -> Fill(fMFTTrackPair->GetMassWithoutMFT(fPrimaryVtxX, fPrimaryVtxY, fPrimaryVtxZ));
295 fHistMassMuonPairsMC[0] -> Fill(fMFTTrackPair->GetMassMC());
297 fHistRapidityPtMuonPairsMC -> Fill(fMFTTrackPair->GetRapidityMC(), fMFTTrackPair->GetPtMC());
299 AliDebug(1, Form("mass = %f MC = %f", fMFTTrackPair->GetMass(fPrimaryVtxZ), fMFTTrackPair->GetMassMC()));
305 //====================================================================================================================================================
307 void AliMuonForwardTrackAnalysis::BuildMuonPairs() {
309 for (Int_t iTrack=0; iTrack<fMuonForwardTracksWithBranson->GetEntries(); iTrack++) {
310 for (Int_t jTrack=0; jTrack<iTrack; jTrack++) {
312 AliMuonForwardTrack *track0_WithBranson = (AliMuonForwardTrack*) fMuonForwardTracksWithBranson->At(iTrack);
313 AliMuonForwardTrack *track1_WithBranson = (AliMuonForwardTrack*) fMuonForwardTracksWithBranson->At(jTrack);
315 AliMuonForwardTrack *track0_WithoutBranson = (AliMuonForwardTrack*) fMuonForwardTracksWithoutBranson->At(iTrack);
316 AliMuonForwardTrack *track1_WithoutBranson = (AliMuonForwardTrack*) fMuonForwardTracksWithoutBranson->At(jTrack);
318 if (fMatchTrigger) if (!track0_WithBranson->GetMatchTrigger() || !track1_WithBranson->GetMatchTrigger()) continue;
319 if (!track0_WithBranson->GetMCTrackRef() || !track1_WithBranson->GetMCTrackRef()) continue;
321 AliMuonForwardTrackPair *trackPairWithBranson = new AliMuonForwardTrackPair(track0_WithBranson, track1_WithBranson);
322 AliMuonForwardTrackPair *trackPairWithoutBranson = new AliMuonForwardTrackPair(track0_WithoutBranson, track1_WithoutBranson);
323 if (fOption==kResonanceOnly && !trackPairWithBranson->IsResonance()) {
324 delete trackPairWithBranson;
325 delete trackPairWithoutBranson;
328 new ((*fMuonForwardTrackPairsWithBranson)[fMuonForwardTrackPairsWithBranson->GetEntries()]) AliMuonForwardTrackPair(*trackPairWithBranson);
329 new ((*fMuonForwardTrackPairsWithoutBranson)[fMuonForwardTrackPairsWithoutBranson->GetEntries()]) AliMuonForwardTrackPair(*trackPairWithoutBranson);
335 //====================================================================================================================================================
337 Bool_t AliMuonForwardTrackAnalysis::PassedCutSingleMuon(AliMuonForwardTrack *track) {
339 AliMUONTrackParam *param = track->GetTrackParamAtMFTCluster(0);
340 AliMUONTrackExtrap::ExtrapToZCov(param, fPrimaryVtxZ);
342 if (track->Pt()<fPtMinSingleMuons) return kFALSE;
344 if (fCutOnOffsetChi2) {
345 Double_t offset = 1.e4*track->GetOffset(fPrimaryVtxX, fPrimaryVtxY, fPrimaryVtxZ);
346 Double_t chi2OverNdf = track->GetGlobalChi2() / Double_t(track->GetNMFTClusters()+track->GetNMUONClusters());
347 offset /= fScaleOffset;
348 chi2OverNdf /= fScaleChi2;
349 offset -= fCenterOffset;
350 chi2OverNdf -= fCenterChi2;
351 // printf("cut on offset and chi2: returning %d\n", TMath::Sqrt(offset*offset + chi2OverNdf*chi2OverNdf)>fRadiusCut);
352 if (TMath::Sqrt(offset*offset + chi2OverNdf*chi2OverNdf) > fRadiusCut) return kFALSE;
359 //====================================================================================================================================================
361 Bool_t AliMuonForwardTrackAnalysis::PassedCutMuonPair(AliMuonForwardTrackPair *pair) {
363 return PassedCutSingleMuon(pair->GetTrack(0)) && PassedCutSingleMuon(pair->GetTrack(1));
367 //====================================================================================================================================================
369 void AliMuonForwardTrackAnalysis::Terminate(Char_t *outputFileName) {
371 TFile *fileOut = new TFile(Form("%s/%s",fOutputDir.Data(),outputFileName), "recreate");
373 printf("Writing output objects to file %s\n", fileOut->GetName());
375 fHistOffsetSingleMuonsX -> Write();
376 fHistOffsetSingleMuonsY -> Write();
377 fHistOffsetSingleMuons -> Write();
378 fHistWOffsetSingleMuons -> Write();
379 fHistErrorSingleMuonsX -> Write();
380 fHistErrorSingleMuonsY -> Write();
382 fHistSingleMuonsPtRapidity -> Write();
383 fHistSingleMuonsOffsetChi2 -> Write();
385 fGraphSingleMuonsOffsetChi2 -> Write();
387 for (Int_t iPtBin=0; iPtBin<fNPtDimuBins+1; iPtBin++) {
388 fHistWOffsetMuonPairs[iPtBin] -> Write();
389 fHistMassMuonPairs[iPtBin] -> Write();
390 fHistMassMuonPairsWithoutMFT[iPtBin] -> Write();
391 fHistMassMuonPairsMC[iPtBin] -> Write();
394 fHistRapidityPtMuonPairsMC -> Write();
400 //====================================================================================================================================================
402 void AliMuonForwardTrackAnalysis::BookHistos() {
404 fHistOffsetSingleMuonsX = new TH1D("fHistOffsetSingleMuonsX", "Offset for single muons along X", 200, -1000, 1000);
405 fHistOffsetSingleMuonsY = new TH1D("fHistOffsetSingleMuonsY", "Offset for single muons along Y", 200, -1000, 1000);
406 fHistErrorSingleMuonsX = new TH1D("fHistErrorSingleMuonsX", "Coordinate Error for single muons along X", 200, 0, 1000);
407 fHistErrorSingleMuonsY = new TH1D("fHistErrorSingleMuonsY", "Coordinate Error for single muons along Y", 200, 0, 1000);
408 fHistOffsetSingleMuons = new TH1D("fHistOffsetSingleMuons", "Offset for single muons", 200, 0, 2000);
409 fHistWOffsetSingleMuons = new TH1D("fHistWOffsetSingleMuons", "Weighted Offset for single muons", 300, 0, 15);
411 fHistSingleMuonsPtRapidity = new TH2D("fHistSingleMuonsPtRapidity", "Phase Space for single muons", 10, -4, -2.5, 10, 0.5, 5.5);
412 fHistSingleMuonsOffsetChi2 = new TH2D("fHistSingleMuonsOffsetChi2", "Offset vs #chi^{2}/ndf for single muons", 400, 0, 4000, 100, 0, 20);
414 fHistOffsetSingleMuonsX -> SetXTitle("Offset(X) [#mum]");
415 fHistOffsetSingleMuonsY -> SetXTitle("Offset(Y) [#mum]");
416 fHistErrorSingleMuonsX -> SetXTitle("Err. on track position at z_{vtx} (X) [#mum]");
417 fHistErrorSingleMuonsY -> SetXTitle("Err. on track position at z_{vtx} (Y) [#mum]");
418 fHistOffsetSingleMuons -> SetXTitle("Offset [#mum]");
419 fHistWOffsetSingleMuons -> SetXTitle("Weighted Offset");
421 fHistSingleMuonsPtRapidity -> SetXTitle("y^{#mu}");
422 fHistSingleMuonsPtRapidity -> SetYTitle("p_{T}^{#mu} [GeV/c]");
423 fHistSingleMuonsOffsetChi2 -> SetXTitle("Offset [#mum]");
424 fHistSingleMuonsOffsetChi2 -> SetYTitle("#chi^{2}/ndf");
426 fHistOffsetSingleMuonsX -> Sumw2();
427 fHistOffsetSingleMuonsY -> Sumw2();
428 fHistErrorSingleMuonsX -> Sumw2();
429 fHistErrorSingleMuonsY -> Sumw2();
430 fHistOffsetSingleMuons -> Sumw2();
431 fHistWOffsetSingleMuons -> Sumw2();
433 fHistSingleMuonsPtRapidity -> Sumw2();
434 fHistSingleMuonsOffsetChi2 -> Sumw2();
436 //--------------------------------------------
438 fGraphSingleMuonsOffsetChi2 = new TGraph();
439 fGraphSingleMuonsOffsetChi2 -> SetName("fGraphSingleMuonsOffsetChi2");
440 fGraphSingleMuonsOffsetChi2 -> SetTitle("fGraphSingleMuonsOffsetChi2");
442 //--------------------------------------------
444 for (Int_t iPtBin=0; iPtBin<=fNPtDimuBins+1; iPtBin++) {
447 fHistWOffsetMuonPairs[iPtBin] = new TH1D(Form("fHistWOffsetMuonPairs_%d",iPtBin),
448 "Weighted Offset for Muon Pairs (All p_{T}^{#mu#mu})",
450 fHistMassMuonPairs[iPtBin] = new TH1D(Form("fHistMassMuonPairs_%d",iPtBin),
451 "Dimuon Mass (MUON+MFT) (All p_{T}^{#mu#mu})",
452 fNMassBins, fMassMin, fMassMax);
453 fHistMassMuonPairsWithoutMFT[iPtBin] = new TH1D(Form("fHistMassMuonPairsWithoutMFT_%d",iPtBin),
454 "Dimuon Mass (MUON only) (All p_{T}^{#mu#mu})",
455 fNMassBins, fMassMin, fMassMax);
456 fHistMassMuonPairsMC[iPtBin] = new TH1D(Form("fHistMassMuonPairsMC_%d",iPtBin),
457 "Dimuon Mass (MC) (All p_{T}^{#mu#mu})",
458 fNMassBins, fMassMin, fMassMax);
462 Double_t ptMin = fPtAxisDimuons->GetBinLowEdge(iPtBin);
463 Double_t ptMax = fPtAxisDimuons->GetBinUpEdge(iPtBin);
464 fHistWOffsetMuonPairs[iPtBin] = new TH1D(Form("fHistWOffsetMuonPairs_%d",iPtBin),
465 Form("Weighted Offset for Muon Pairs ( %3.1f < p_{T}^{#mu#mu} < %3.1f GeV/c)",ptMin,ptMax),
467 fHistMassMuonPairs[iPtBin] = new TH1D(Form("fHistMassMuonPairs_%d",iPtBin),
468 Form("Dimuon Mass (MUON+MFT) (%3.1f < p_{T}^{#mu#mu} < %3.1f GeV/c)",ptMin,ptMax),
469 fNMassBins, fMassMin, fMassMax);
470 fHistMassMuonPairsWithoutMFT[iPtBin] = new TH1D(Form("fHistMassMuonPairsWithoutMFT_%d",iPtBin),
471 Form("Dimuon Mass (MUON only) (%3.1f < p_{T}^{#mu#mu} < %3.1f GeV/c)",ptMin,ptMax),
472 fNMassBins, fMassMin, fMassMax);
473 fHistMassMuonPairsMC[iPtBin] = new TH1D(Form("fHistMassMuonPairsMC_%d",iPtBin),
474 Form("Dimuon Mass (MC) (%3.1f < p_{T}^{#mu#mu} < %3.1f GeV/c)",ptMin,ptMax),
475 fNMassBins, fMassMin, fMassMax);
478 fHistWOffsetMuonPairs[iPtBin] -> SetXTitle("Weighted Offset");
479 fHistMassMuonPairs[iPtBin] -> SetXTitle("Mass [GeV/c^{2}]");
480 fHistMassMuonPairsWithoutMFT[iPtBin] -> SetXTitle("Mass [GeV/c^{2}]");
481 fHistMassMuonPairsMC[iPtBin] -> SetXTitle("Mass [GeV/c^{2}]");
483 fHistWOffsetMuonPairs[iPtBin] -> Sumw2();
484 fHistMassMuonPairs[iPtBin] -> Sumw2();
485 fHistMassMuonPairsWithoutMFT[iPtBin] -> Sumw2();
486 fHistMassMuonPairsMC[iPtBin] -> Sumw2();
490 fHistRapidityPtMuonPairsMC = new TH2D("fHistRapidityPtMuonPairsMC", "Dimuon Phase Space (MC)", 100, -4.5, -2., 100, 0., 10.);
491 fHistRapidityPtMuonPairsMC -> SetXTitle("Rapidity");
492 fHistRapidityPtMuonPairsMC -> SetYTitle("p_{T} [GeV/c]");
493 fHistRapidityPtMuonPairsMC -> Sumw2();
497 //====================================================================================================================================================