Claude Pruneau's AddTask macro
[u/mrichter/AliRoot.git] / MFT / AliMuonForwardTrackAnalysis.cxx
CommitLineData
e806e863 1//====================================================================================================================================================
2//
3// Class for the analysis of the ALICE muon forward tracks (MUON + MFT)
4//
5// Contact author: antonio.uras@cern.ch
6//
7//====================================================================================================================================================
8
9#include "TObject.h"
10#include "TClonesArray.h"
11#include "AliMuonForwardTrack.h"
12#include "AliMuonForwardTrackPair.h"
13#include "TMatrixD.h"
14#include "TTree.h"
15#include "TH1D.h"
16#include "AliLog.h"
17#include "TFile.h"
18#include "TParticle.h"
19#include "AliMUONTrackParam.h"
20#include "AliMUONTrackExtrap.h"
21#include "TGeoManager.h"
22#include "TRandom.h"
23#include "TLorentzVector.h"
24#include "TDatabasePDG.h"
b5ab1ac4 25#include "TGraph.h"
e806e863 26#include "AliMuonForwardTrackAnalysis.h"
27
28ClassImp(AliMuonForwardTrackAnalysis)
29
30//====================================================================================================================================================
31
32AliMuonForwardTrackAnalysis::AliMuonForwardTrackAnalysis():
33 TObject(),
34 fInputDir(0),
35 fOutputDir(0),
36 fInputTree(0),
37 fMuonForwardTracks(0),
38 fMuonForwardTrackPairs(0),
39 fMFTTrack(0),
40 fMFTTrackPair(0),
41 fMCRefTrack(0),
42 fEv(0),
43 fFirstEvent(-1),
44 fLastEvent(-1),
45 fNTracksOfEvent(0),
46 fNTracksAnalyzedOfEvent(0),
47 fNTracksAnalyzed(0),
48 fNPairsOfEvent(0),
49 fNPairsAnalyzedOfEvent(0),
50 fHistOffsetSingleMuonsX(0x0),
51 fHistOffsetSingleMuonsY(0x0),
52 fHistOffsetSingleMuons(0x0),
53 fHistWOffsetSingleMuons(0x0),
54 fHistErrorSingleMuonsX(0x0),
55 fHistErrorSingleMuonsY(0x0),
56 fHistOffsetSingleMuonsX_vsPtRapidity(0x0),
57 fHistOffsetSingleMuonsY_vsPtRapidity(0x0),
58 fHistSingleMuonsPtRapidity(0x0),
b5ab1ac4 59 fHistSingleMuonsOffsetChi2(0x0),
e806e863 60 fHistWOffsetMuonPairs(0x0),
61 fHistMassMuonPairs(0x0),
62 fHistMassMuonPairsWithoutMFT(0x0),
63 fHistMassMuonPairsMC(0x0),
64 fHistRapidityPtMuonPairsMC(0x0),
b5ab1ac4 65 fGraphSingleMuonsOffsetChi2(0x0),
e806e863 66 fNMassBins(1000),
67 fMassMin(0),
68 fMassMax(10),
69 fSingleMuonAnalysis(1),
70 fMuonPairAnalysis(1),
71 fMatchTrigger(0),
72 fOption(0),
b5ab1ac4 73 fXVertResMC(50.e-4),
74 fYVertResMC(50.e-4),
75 fZVertResMC(50.e-4),
e806e863 76 fMaxNWrongClustersMC(999),
77 fPtMinSingleMuons(0)
78{
79
80 // default constructor
81
82 for (Int_t rapBin=0; rapBin<fNRapBinsOffsetSingleMuons; rapBin++) {
83 for (Int_t ptBin=0; ptBin<fNPtBinsOffsetSingleMuons; ptBin++) {
84 fHistOffsetSingleMuonsX_tmp[rapBin][ptBin] = 0x0;
85 fHistOffsetSingleMuonsY_tmp[rapBin][ptBin] = 0x0;
86 }
87 }
88
89}
90
91//====================================================================================================================================================
92
93Bool_t AliMuonForwardTrackAnalysis::Init(Char_t *inputFileName) {
94
95 BookHistos();
96
97 TFile *inputFile = new TFile(Form("%s/%s",fInputDir.Data(),inputFileName));
98 if (!inputFile || !inputFile->IsOpen()) {
99 AliError(Form("Error opening file %s", inputFileName));
100 return kFALSE;
101 }
102 fInputTree = (TTree*) inputFile->Get("AliMuonForwardTracks");
103 if (!fInputTree) {
104 AliError("Error reading input tree");
105 return kFALSE;
106 }
107
108 if (fFirstEvent<0 || fLastEvent<0 || fFirstEvent>fLastEvent || fFirstEvent>=fInputTree->GetEntries()) {
109 fFirstEvent = 0;
110 fLastEvent = fInputTree->GetEntries()-1;
111 }
112 else {
113 fLastEvent = TMath::Min(fLastEvent, Int_t(fInputTree->GetEntries()-1));
114 }
115
116 AliInfo(Form("Analysing events %d to %d", fFirstEvent, fLastEvent));
117
118 fMuonForwardTracks = new TClonesArray("AliMuonForwardTrack");
119 fInputTree->SetBranchAddress("tracks", &fMuonForwardTracks);
120
121 TGeoManager::Import(Form("%s/geometry.root",fInputDir.Data()));
122
123 AliMUONTrackExtrap::SetField();
124
125 fMuonForwardTrackPairs = new TClonesArray("AliMuonForwardTrackPair");
126
127 return kTRUE;
128
129}
130
131//====================================================================================================================================================
132
133Bool_t AliMuonForwardTrackAnalysis::LoadNextEvent() {
134
135 if (fEv>fLastEvent) return kFALSE;
136 if (fEv<fFirstEvent) { fEv++; return kTRUE; }
137 fMuonForwardTracks -> Clear();
138 fInputTree->GetEvent(fEv);
139 AliInfo(Form("**** analyzing event # %4d (%3d tracks) ****", fEv, fMuonForwardTracks->GetEntries()));
140
141 if (fSingleMuonAnalysis) {
142 fNTracksAnalyzedOfEvent = 0;
143 fNTracksOfEvent = fMuonForwardTracks->GetEntries();
144 while (AnalyzeSingleMuon()) continue;
145 }
146
147 if (fMuonPairAnalysis) {
148 if (fMuonForwardTrackPairs) {
149 fMuonForwardTrackPairs->Clear();
150 }
151 BuildMuonPairs();
152 fNPairsAnalyzedOfEvent = 0;
153 fNPairsOfEvent = fMuonForwardTrackPairs->GetEntries();
154 while (AnalyzeMuonPair()) continue;
155 }
156
157 fEv++;
158
159 return kTRUE;
160
161}
162
163//====================================================================================================================================================
164
165Bool_t AliMuonForwardTrackAnalysis::AnalyzeSingleMuon() {
166
167 if (fNTracksAnalyzedOfEvent>=fNTracksOfEvent) return kFALSE;
168
b5ab1ac4 169 fMFTTrack = (AliMuonForwardTrack*) fMuonForwardTracks->At(fNTracksAnalyzedOfEvent);
e806e863 170 fNTracksAnalyzedOfEvent++;
171 if (fMatchTrigger && !fMFTTrack->GetMatchTrigger()) return kTRUE;
172 fMCRefTrack = fMFTTrack->GetMCTrackRef();
173
174 if (!fMCRefTrack) return kTRUE;
175 if (fMFTTrack->GetNWrongClustersMC()>fMaxNWrongClustersMC) return kTRUE;
176
177 Double_t xOrig=gRandom->Gaus(0., fXVertResMC);
b5ab1ac4 178 Double_t yOrig=gRandom->Gaus(0., fYVertResMC);
179// Double_t xOrig = 0.;
180// Double_t yOrig = 0.;
e806e863 181 Double_t zOrig=gRandom->Gaus(0., fZVertResMC);
182
183 AliMUONTrackParam *param = fMFTTrack->GetTrackParamAtMFTCluster(0);
184 AliMUONTrackExtrap::ExtrapToZCov(param, zOrig);
185
186 TLorentzVector pMu;
187 Double_t mMu = TDatabasePDG::Instance()->GetParticle("mu-")->Mass();
188 Double_t energy = TMath::Sqrt(param->P()*param->P() + mMu*mMu);
189 pMu.SetPxPyPzE(param->Px(), param->Py(), param->Pz(), energy);
190
191 if (fMFTTrack->Pt()<fPtMinSingleMuons) return kTRUE;
192
193 TMatrixD cov(5,5);
194 cov = param->GetCovariances();
195
196 fHistErrorSingleMuonsX -> Fill(1.e4*TMath::Sqrt(cov(0,0)));
197 fHistErrorSingleMuonsY -> Fill(1.e4*TMath::Sqrt(cov(2,2)));
198
199 Double_t dX = fMFTTrack->GetOffsetX(xOrig, zOrig);
200 Double_t dY = fMFTTrack->GetOffsetY(yOrig, zOrig);
201
202 Double_t offset = fMFTTrack->GetOffset(xOrig, yOrig, zOrig);
203 Double_t weightedOffset = fMFTTrack->GetWeightedOffset(xOrig, yOrig, zOrig);
204
205 // AliDebug(2, Form("pdg code = %d\n", fMCRefTrack->GetPdgCode()));
206
207 fHistOffsetSingleMuonsX -> Fill(1.e4*dX);
208 fHistOffsetSingleMuonsY -> Fill(1.e4*dY);
209 Int_t rapBin = fHistOffsetSingleMuonsX_vsPtRapidity->GetXaxis()->FindBin(pMu.Rapidity());
210 Int_t ptBin = fHistOffsetSingleMuonsX_vsPtRapidity->GetYaxis()->FindBin(pMu.Pt());
211 // AliDebug(1, Form("pt = %f (%d), rap = %f (%d)\n", pMu.Pt(), pMu.Rapidity(), ptBin, rapBin));
212 if (0<rapBin && rapBin<=fNRapBinsOffsetSingleMuons && 0<ptBin && ptBin<=fNPtBinsOffsetSingleMuons) {
213 fHistOffsetSingleMuonsX_tmp[rapBin-1][ptBin-1]->Fill(1.e4*dX);
214 fHistOffsetSingleMuonsY_tmp[rapBin-1][ptBin-1]->Fill(1.e4*dY);
215 }
b5ab1ac4 216 fHistSingleMuonsPtRapidity -> Fill(pMu.Rapidity(), pMu.Pt());
217 fHistOffsetSingleMuons -> Fill(1.e4*offset);
218 fHistWOffsetSingleMuons -> Fill(weightedOffset);
219 Double_t chi2OverNdf = fMFTTrack->GetGlobalChi2()/Double_t(fMFTTrack->GetNMFTClusters()+fMFTTrack->GetNMUONClusters());
220 fHistSingleMuonsOffsetChi2 -> Fill(1.e4*offset, chi2OverNdf);
221 fGraphSingleMuonsOffsetChi2 -> SetPoint(fGraphSingleMuonsOffsetChi2->GetN(),1.e4*offset, chi2OverNdf);
e806e863 222
223 fNTracksAnalyzed++;
224
225 return kTRUE;
226
227}
228
229//====================================================================================================================================================
230
231Bool_t AliMuonForwardTrackAnalysis::AnalyzeMuonPair() {
232
233 if (fNPairsAnalyzedOfEvent>=fNPairsOfEvent) return kFALSE;
234
235 fMFTTrackPair = (AliMuonForwardTrackPair*) fMuonForwardTrackPairs->At(fNPairsAnalyzedOfEvent);
236
237 if (fOption==kResonanceOnly && !fMFTTrackPair->IsResonance()) {
238 fNPairsAnalyzedOfEvent++;
239 return kTRUE;
240 }
241
242 Double_t xOrig=gRandom->Gaus(0., fXVertResMC);
b5ab1ac4 243 Double_t yOrig=gRandom->Gaus(0., fYVertResMC);
e806e863 244 Double_t zOrig=gRandom->Gaus(0., fZVertResMC);
245 AliDebug(1, Form("origin = (%f, %f, %f)", xOrig, yOrig, zOrig));
246
247 fHistMassMuonPairs -> Fill(fMFTTrackPair->GetMass(zOrig));
248 fHistWOffsetMuonPairs -> Fill(fMFTTrackPair->GetWeightedOffset(xOrig, yOrig, zOrig));
249 fHistMassMuonPairsWithoutMFT -> Fill(fMFTTrackPair->GetMassWithoutMFT(xOrig, yOrig, zOrig));
250 fHistMassMuonPairsMC -> Fill(fMFTTrackPair->GetMassMC());
251 fHistRapidityPtMuonPairsMC -> Fill(fMFTTrackPair->GetRapidityMC(), fMFTTrackPair->GetPtMC());
252
253 AliDebug(1, Form("mass = %f MC = %f", fMFTTrackPair->GetMass(zOrig), fMFTTrackPair->GetMassMC()));
254
255 fNPairsAnalyzedOfEvent++;
256
257 return kTRUE;
258
259}
260
261//====================================================================================================================================================
262
263void AliMuonForwardTrackAnalysis::BuildMuonPairs() {
264
265 for (Int_t iTrack=0; iTrack<fMuonForwardTracks->GetEntries(); iTrack++) {
266 for (Int_t jTrack=0; jTrack<iTrack; jTrack++) {
267
268 AliMuonForwardTrack *track0 = (AliMuonForwardTrack*) fMuonForwardTracks->At(iTrack);
269 AliMuonForwardTrack *track1 = (AliMuonForwardTrack*) fMuonForwardTracks->At(jTrack);
270
271 if (fMatchTrigger) if (!track0->GetMatchTrigger() || !track1->GetMatchTrigger()) continue;
272 if (!track0->GetMCTrackRef() || !track1->GetMCTrackRef()) continue;
273 if (track0->GetNWrongClustersMC()>fMaxNWrongClustersMC || track1->GetNWrongClustersMC()>fMaxNWrongClustersMC) continue;
274 if (track0->Pt()<fPtMinSingleMuons || track1->Pt()<fPtMinSingleMuons) continue;
275
276 AliMuonForwardTrackPair *trackPair = new AliMuonForwardTrackPair(track0, track1);
277 if (fOption==kResonanceOnly && !trackPair->IsResonance()) {
278 delete trackPair;
279 continue;
280 }
281 new ((*fMuonForwardTrackPairs)[fMuonForwardTrackPairs->GetEntries()]) AliMuonForwardTrackPair(*trackPair);
282
283 }
284 }
285
286}
287
288//====================================================================================================================================================
289
290void AliMuonForwardTrackAnalysis::Terminate(Char_t *outputFileName) {
291
292 for (Int_t rapBin=0; rapBin<fNRapBinsOffsetSingleMuons; rapBin++) {
293 for (Int_t ptBin=0; ptBin<fNPtBinsOffsetSingleMuons; ptBin++) {
294 Int_t binMin_x = fHistOffsetSingleMuonsX_tmp[rapBin][ptBin]->FindBin(-3*fHistOffsetSingleMuonsX_tmp[rapBin][ptBin]->GetRMS());
295 Int_t binMax_x = fHistOffsetSingleMuonsX_tmp[rapBin][ptBin]->FindBin(+3*fHistOffsetSingleMuonsX_tmp[rapBin][ptBin]->GetRMS());
296 for (Int_t bin=1; bin<=fHistOffsetSingleMuonsX_tmp[rapBin][ptBin]->GetNbinsX(); bin++) {
297 if (bin<binMin_x || bin>binMax_x) fHistOffsetSingleMuonsX_tmp[rapBin][ptBin]->SetBinContent(bin, 0);
298 }
299 Int_t binMin_y = fHistOffsetSingleMuonsY_tmp[rapBin][ptBin]->FindBin(-3*fHistOffsetSingleMuonsY_tmp[rapBin][ptBin]->GetRMS());
300 Int_t binMax_y = fHistOffsetSingleMuonsY_tmp[rapBin][ptBin]->FindBin(+3*fHistOffsetSingleMuonsY_tmp[rapBin][ptBin]->GetRMS());
301 for (Int_t bin=1; bin<=fHistOffsetSingleMuonsY_tmp[rapBin][ptBin]->GetNbinsX(); bin++) {
302 if (bin<binMin_y || bin>binMax_y) fHistOffsetSingleMuonsY_tmp[rapBin][ptBin]->SetBinContent(bin, 0);
303 }
304 fHistOffsetSingleMuonsX_vsPtRapidity->SetBinContent(rapBin+1, ptBin+1, fHistOffsetSingleMuonsX_tmp[rapBin][ptBin]->GetRMS());
305 fHistOffsetSingleMuonsX_vsPtRapidity->SetBinError(rapBin+1, ptBin+1, fHistOffsetSingleMuonsX_tmp[rapBin][ptBin]->GetRMSError());
306 fHistOffsetSingleMuonsY_vsPtRapidity->SetBinContent(rapBin+1, ptBin+1, fHistOffsetSingleMuonsY_tmp[rapBin][ptBin]->GetRMS());
307 fHistOffsetSingleMuonsY_vsPtRapidity->SetBinError(rapBin+1, ptBin+1, fHistOffsetSingleMuonsY_tmp[rapBin][ptBin]->GetRMSError());
308 }
309 }
310
311 TFile *fileOut = new TFile(Form("%s/%s",fOutputDir.Data(),outputFileName), "recreate");
312
313 printf("Writing output objects to file %s\n", fileOut->GetName());
314
315 fHistOffsetSingleMuonsX -> Write();
316 fHistOffsetSingleMuonsY -> Write();
317 fHistOffsetSingleMuons -> Write();
318 fHistWOffsetSingleMuons -> Write();
319 fHistErrorSingleMuonsX -> Write();
320 fHistErrorSingleMuonsY -> Write();
321
322 fHistOffsetSingleMuonsX_vsPtRapidity -> Write();
323 fHistOffsetSingleMuonsY_vsPtRapidity -> Write();
324
325// for (Int_t rapBin=0; rapBin<fNRapBinsOffsetSingleMuons; rapBin++) {
326// for (Int_t ptBin=0; ptBin<fNPtBinsOffsetSingleMuons; ptBin++) {
327// fHistOffsetSingleMuonsX_tmp[rapBin][ptBin] -> Write();
328// fHistOffsetSingleMuonsY_tmp[rapBin][ptBin] -> Write();
329// }
330// }
331
332 fHistSingleMuonsPtRapidity -> Write();
b5ab1ac4 333 fHistSingleMuonsOffsetChi2 -> Write();
334
335 fGraphSingleMuonsOffsetChi2 -> Write();
e806e863 336
337 fHistWOffsetMuonPairs -> Write();
338 fHistMassMuonPairs -> Write();
339 fHistMassMuonPairsWithoutMFT -> Write();
340 fHistMassMuonPairsMC -> Write();
341 fHistRapidityPtMuonPairsMC -> Write();
342
343 fileOut -> Close();
344
345}
346
347//====================================================================================================================================================
348
349void AliMuonForwardTrackAnalysis::BookHistos() {
350
351 fHistOffsetSingleMuonsX = new TH1D("fHistOffsetSingleMuonsX", "Offset for single muons along X", 200, -1000, 1000);
352 fHistOffsetSingleMuonsY = new TH1D("fHistOffsetSingleMuonsY", "Offset for single muons along Y", 200, -1000, 1000);
353 fHistErrorSingleMuonsX = new TH1D("fHistErrorSingleMuonsX", "Coordinate Error for single muons along X", 200, 0, 1000);
354 fHistErrorSingleMuonsY = new TH1D("fHistErrorSingleMuonsY", "Coordinate Error for single muons along Y", 200, 0, 1000);
b5ab1ac4 355 fHistOffsetSingleMuons = new TH1D("fHistOffsetSingleMuons", "Offset for single muons", 200, 0, 2000);
e806e863 356 fHistWOffsetSingleMuons = new TH1D("fHistWOffsetSingleMuons", "Weighted Offset for single muons", 300, 0, 15);
357
358 fHistOffsetSingleMuonsX_vsPtRapidity = new TH2D("fHistOffsetSingleMuonsX_vsPtRapidity", "Offset for single muons along X",
359 10, -4, -2.5, 10, 0.5, 5.5);
360 fHistOffsetSingleMuonsY_vsPtRapidity = new TH2D("fHistOffsetSingleMuonsY_vsPtRapidity", "Offset for single muons along Y",
361 10, -4, -2.5, 10, 0.5, 5.5);
362
363 for (Int_t rapBin=0; rapBin<fNRapBinsOffsetSingleMuons; rapBin++) {
364 for (Int_t ptBin=0; ptBin<fNPtBinsOffsetSingleMuons; ptBin++) {
365 fHistOffsetSingleMuonsX_tmp[rapBin][ptBin] = new TH1D(Form("fHistOffsetSingleMuonsX_tmp_%02d_%02d",rapBin,ptBin), "", 1000, -1000, 1000);
366 fHistOffsetSingleMuonsY_tmp[rapBin][ptBin] = new TH1D(Form("fHistOffsetSingleMuonsY_tmp_%02d_%02d",rapBin,ptBin), "", 1000, -1000, 1000);
367 }
368 }
369
370 fHistSingleMuonsPtRapidity = new TH2D("fHistSingleMuonsPtRapidity", "Phase Space for single muons", 10, -4, -2.5, 10, 0.5, 5.5);
b5ab1ac4 371 fHistSingleMuonsOffsetChi2 = new TH2D("fHistSingleMuonsOffsetChi2", "Offset vs #chi^{2}/ndf for single muons", 400, 0, 4000, 100, 0, 20);
e806e863 372
373 fHistOffsetSingleMuonsX -> SetXTitle("Offset(X) [#mum]");
374 fHistOffsetSingleMuonsY -> SetXTitle("Offset(Y) [#mum]");
375 fHistErrorSingleMuonsX -> SetXTitle("Err. on track position at z_{vtx} (X) [#mum]");
376 fHistErrorSingleMuonsY -> SetXTitle("Err. on track position at z_{vtx} (Y) [#mum]");
377 fHistOffsetSingleMuons -> SetXTitle("Offset [#mum]");
378 fHistWOffsetSingleMuons -> SetXTitle("Weighted Offset");
379
380 fHistOffsetSingleMuonsX_vsPtRapidity -> SetXTitle("y^{#mu}");
381 fHistOffsetSingleMuonsY_vsPtRapidity -> SetXTitle("y^{#mu}");
382 fHistOffsetSingleMuonsX_vsPtRapidity -> SetYTitle("p_{T}^{#mu} [GeV/c]");
383 fHistOffsetSingleMuonsY_vsPtRapidity -> SetYTitle("p_{T}^{#mu} [GeV/c]");
384
385 fHistSingleMuonsPtRapidity -> SetXTitle("y^{#mu}");
386 fHistSingleMuonsPtRapidity -> SetYTitle("p_{T}^{#mu} [GeV/c]");
b5ab1ac4 387 fHistSingleMuonsOffsetChi2 -> SetXTitle("Offset [#mum]");
388 fHistSingleMuonsOffsetChi2 -> SetYTitle("#chi^{2}/ndf");
e806e863 389
390 fHistOffsetSingleMuonsX -> Sumw2();
391 fHistOffsetSingleMuonsY -> Sumw2();
392 fHistErrorSingleMuonsX -> Sumw2();
393 fHistErrorSingleMuonsY -> Sumw2();
394 fHistOffsetSingleMuons -> Sumw2();
395 fHistWOffsetSingleMuons -> Sumw2();
396
397 fHistOffsetSingleMuonsX_vsPtRapidity -> Sumw2();
398 fHistOffsetSingleMuonsY_vsPtRapidity -> Sumw2();
399 fHistSingleMuonsPtRapidity -> Sumw2();
b5ab1ac4 400 fHistSingleMuonsOffsetChi2 -> Sumw2();
e806e863 401
402 //--------------------------------------------
403
b5ab1ac4 404 fGraphSingleMuonsOffsetChi2 = new TGraph("fGraphSingleMuonsOffsetChi2");
405 fGraphSingleMuonsOffsetChi2 -> SetName("fGraphSingleMuonsOffsetChi2");
406
407 //--------------------------------------------
408
e806e863 409 fHistWOffsetMuonPairs = new TH1D("fHistWOffsetMuonPairs", "Weighted Offset for Muon Pairs", 300, 0, 60);
410 fHistMassMuonPairs = new TH1D("fHistMassMuonPairs", "Dimuon Mass (MUON+MFT)", fNMassBins, fMassMin, fMassMax);
411 fHistMassMuonPairsWithoutMFT = new TH1D("fHistMassMuonPairsWithoutMFT", "Dimuon Mass (MUON only)", fNMassBins, fMassMin, fMassMax);
412 fHistMassMuonPairsMC = new TH1D("fHistMassMuonPairsMC", "Dimuon Mass (MC)", fNMassBins, fMassMin, fMassMax);
413 fHistRapidityPtMuonPairsMC = new TH2D("fHistRapidityPtMuonPairsMC", "Dimuon Phase Space (MC)", 100, -4.5, -2., 100, 0., 10.);
414
415 fHistWOffsetMuonPairs -> SetXTitle("Weighted Offset");
416 fHistMassMuonPairs -> SetXTitle("Mass [GeV/c^{2}]");
417 fHistMassMuonPairsWithoutMFT -> SetXTitle("Mass [GeV/c^{2}]");
418 fHistMassMuonPairsMC -> SetXTitle("Mass [GeV/c^{2}]");
419 fHistRapidityPtMuonPairsMC -> SetXTitle("Rapidity");
420 fHistRapidityPtMuonPairsMC -> SetYTitle("p_{T} [GeV/c]");
421
422 fHistWOffsetMuonPairs -> Sumw2();
423 fHistMassMuonPairs -> Sumw2();
424 fHistMassMuonPairsWithoutMFT -> Sumw2();
425 fHistMassMuonPairsMC -> Sumw2();
426 fHistRapidityPtMuonPairsMC -> Sumw2();
427
428}
429
430//====================================================================================================================================================
431