]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/muon/AliEventPoolMuon.cxx
bug fix
[u/mrichter/AliRoot.git] / PWG3 / muon / AliEventPoolMuon.cxx
CommitLineData
866de0ba 1#include "AliEventPoolMuon.h"
2#include "AliRunTagCuts.h"
3#include "AliLHCTagCuts.h"
4#include "AliDetectorTagCuts.h"
5#include "AliEventTagCuts.h"
6#include "AliTagAnalysis.h"
7
8// Realisation of an AliVEventPool via
9// on the flight generation of the bin using AliTagAnalysis.
10// Created expanding AliEventPoolOTF functionalities
11//
12// Authors Alessandro De Falco and Antonio Uras, INFN Cagliari
13// alessandro.de.falco@ca.infn.it antonio.uras@ca.infn.it
14
15#define AliEventPoolMuon_CXX
16
17ClassImp(AliEventPoolMuon)
18
19//=====================================================================================================
20
21AliEventPoolMuon::AliEventPoolMuon():
22 AliVEventPool(),
23 fTagAnalysis(0),
24 fRunCuts(0),
25 fLHCCuts(0),
26 fDetectorCuts(0),
27 fEventCuts(0),
28 fTagDirectory(0),
29 fMultiplicityMin(0),
30 fMultiplicityMax(0),
31 fMultiplicityStep(0),
32 fMultiplicity(0),
33 fNFWMuonMin(0),
34 fNFWMuonMax(0),
35 fNFWMuonStep(0),
36 fNFWMuon(0),
37 fPrimaryVertexZMin(0),
38 fPrimaryVertexZMax(0),
39 fPrimaryVertexZStep(0),
40 fPrimaryVertexZ(0),
41 fBinNumber(0) {
42
43 // Default constructor
44
45}
46
47//=====================================================================================================
48
49AliEventPoolMuon::AliEventPoolMuon(const Char_t *name, const Char_t *title):
50 AliVEventPool(name, title),
51 fTagAnalysis(new AliTagAnalysis(title)),
52 fRunCuts(new AliRunTagCuts()),
53 fLHCCuts(new AliLHCTagCuts()),
54 fDetectorCuts(new AliDetectorTagCuts()),
55 fEventCuts(new AliEventTagCuts()),
56 fTagDirectory("."),
57 fMultiplicityMin(0),
58 fMultiplicityMax(0),
59 fMultiplicityStep(0),
60 fMultiplicity(0),
61 fNFWMuonMin(0),
62 fNFWMuonMax(0),
63 fNFWMuonStep(0),
64 fNFWMuon(0),
65 fPrimaryVertexZMin(0),
66 fPrimaryVertexZMax(0),
67 fPrimaryVertexZStep(0),
68 fPrimaryVertexZ(0),
69 fBinNumber(0) {
70
71 // Constructor
72
73}
74
75//=====================================================================================================
76
77AliEventPoolMuon::AliEventPoolMuon(const AliEventPoolMuon& obj):
78 AliVEventPool(obj),
79 fTagAnalysis(0),
80 fRunCuts(0),
81 fLHCCuts(0),
82 fDetectorCuts(0),
83 fEventCuts(0),
84 fTagDirectory(0),
85 fMultiplicityMin(0),
86 fMultiplicityMax(0),
87 fMultiplicityStep(0),
88 fMultiplicity(0),
89 fNFWMuonMin(0),
90 fNFWMuonMax(0),
91 fNFWMuonStep(0),
92 fNFWMuon(0),
93 fPrimaryVertexZMin(0),
94 fPrimaryVertexZMax(0),
95 fPrimaryVertexZStep(0),
96 fPrimaryVertexZ(0),
97 fBinNumber(0) {
98
99 // Copy constructor
100
101}
102
103//=====================================================================================================
104
105AliEventPoolMuon& AliEventPoolMuon::operator=(const AliEventPoolMuon& other) {
106
107 // Assignment operator
108 AliVEventPool::operator=(other);
109 return *this;
110
111}
112
113//=====================================================================================================
114
115void AliEventPoolMuon::Init() {
116
117 fTagAnalysis -> ChainLocalTags(fTagDirectory);
118
119 fMultiplicity = fMultiplicityMin;
120 fNFWMuon = fNFWMuonMin;
121 fPrimaryVertexZ = fPrimaryVertexZMin;
122
123}
124
125//=====================================================================================================
126
127TChain* AliEventPoolMuon::GetNextChain() {
128
129 TChain *chain = 0;
130 fBinNumber++;
131
132 // hierarchic order of variables: multiplicity -> nFWMuons -> primaryVertexZ
133
134 Double_t primaryVertexZMax_TMP = fPrimaryVertexZ + fPrimaryVertexZStep;
135 if (primaryVertexZMax_TMP > fPrimaryVertexZMax) {
136 fPrimaryVertexZ = fPrimaryVertexZMin;
137 primaryVertexZMax_TMP = fPrimaryVertexZ + fPrimaryVertexZStep;
138 fNFWMuon += fNFWMuonStep;
139 }
140
141 Int_t nFWMuonMax_TMP = fNFWMuon + fNFWMuonStep - 1;
142 if (nFWMuonMax_TMP > fNFWMuonMax) {
143 fNFWMuon = fNFWMuonMin;
144 nFWMuonMax_TMP = fNFWMuon + fNFWMuonStep - 1;
145 fMultiplicity += fMultiplicityStep;
146 }
147
148 Int_t multiplicityMax_TMP = fMultiplicity + fMultiplicityStep - 1;
149 if (multiplicityMax_TMP > fMultiplicityMax) return 0;
150 else {
151 printf("\n");
152 printf("mixing events in pool #%02d: multiplicity %d -> %d\n",fBinNumber,fMultiplicity,multiplicityMax_TMP);
153 printf(" nFWMuons %d -> %d\n",fNFWMuon,nFWMuonMax_TMP);
154 printf(" vertexZ %f -> %f\n\n",fPrimaryVertexZ, primaryVertexZMax_TMP);
155 fEventCuts->SetPrimaryVertexZRange(fPrimaryVertexZ, primaryVertexZMax_TMP);
156 fEventCuts->SetNFWMuonRange(fNFWMuon, nFWMuonMax_TMP);
157 fEventCuts->SetMultiplicityRange(fMultiplicity, multiplicityMax_TMP);
158 chain = fTagAnalysis->QueryTags(fRunCuts, fLHCCuts, fDetectorCuts, fEventCuts);
159 fPrimaryVertexZ += fPrimaryVertexZStep; // here the innermost bin-variable has to be increased
160 return chain;
161 }
162
163}
164
165//=====================================================================================================
166
167void AliEventPoolMuon::GetCurrentBin(Float_t* /*bin*/) {
168
169 //
170
171}
172
173//=====================================================================================================
174
175Int_t AliEventPoolMuon::GetDimension() {
176
177 return (1);
178
179}
180
181//=====================================================================================================