17 |
|
BaseMod(name,title), |
18 |
|
fCleanLeptonsName(ModNames::gkMergedLeptonsName), |
19 |
|
fMinPt(10), |
20 |
< |
fDilMinMass(12), |
21 |
< |
fMinZMass(70), |
22 |
< |
fMaxZMass(110), |
23 |
< |
fIgnoreElCharge(kTRUE), |
20 |
> |
fDilMinMass(2), |
21 |
> |
fMinZMass(60), |
22 |
> |
fMaxZMass(120), |
23 |
> |
fIgnoreCharge(kTRUE), |
24 |
|
fNAccCounters(0), |
25 |
|
fAllDiLepMass(0), |
26 |
|
fDiElMass(0), |
42 |
|
{ |
43 |
|
// Process entries of the tree. |
44 |
|
|
45 |
< |
fNAccCounters->Fill(0); |
45 |
> |
if (GetFillHist()) fNAccCounters->Fill(0); |
46 |
|
|
47 |
|
const ParticleCol *leptons = GetObjThisEvt<ParticleCol>(fCleanLeptonsName); |
48 |
|
if (!leptons) { |
50 |
|
return; |
51 |
|
} |
52 |
|
|
53 |
< |
fNAccCounters->Fill(1); |
53 |
> |
if (GetFillHist()) fNAccCounters->Fill(1); |
54 |
|
|
55 |
|
// make sure have found at least 2 leptons |
56 |
|
if (leptons->GetEntries()<2) { |
81 |
|
if (mass<fDilMinMass) |
82 |
|
continue; |
83 |
|
|
84 |
< |
fAllDiLepMass->Fill(mass); |
84 |
> |
if (GetFillHist()) fAllDiLepMass->Fill(mass); |
85 |
|
|
86 |
|
if (li->ObjType()!=lj->ObjType()) { |
87 |
< |
fElMuMass->Fill(mass); |
88 |
< |
++nGoodPairs; |
87 |
> |
if (fIgnoreCharge || (li->Charge()!=lj->Charge())) { |
88 |
> |
if (GetFillHist()) fElMuMass->Fill(mass); |
89 |
> |
++nGoodPairs; |
90 |
> |
} |
91 |
|
continue; |
92 |
|
} |
93 |
|
|
94 |
|
if (li->Is(kMuon)) { |
95 |
< |
if (li->Charge()!=lj->Charge()) { |
96 |
< |
fDiMuMass->Fill(mass); |
95 |
> |
if (fIgnoreCharge || (li->Charge()!=lj->Charge())) { |
96 |
> |
if (GetFillHist()) fDiMuMass->Fill(mass); |
97 |
> |
++nGoodPairs; |
98 |
|
if ((mass>fMinZMass) && (mass<fMaxZMass)) { |
99 |
|
++nZPairs; |
97 |
– |
continue; |
100 |
|
} |
101 |
|
} |
100 |
– |
++nGoodPairs; |
102 |
|
continue; |
103 |
|
} |
104 |
|
|
105 |
|
if (li->Is(kElectron)) { |
106 |
< |
if (fIgnoreElCharge || (li->Charge()!=lj->Charge())) { |
107 |
< |
fDiElMass->Fill(mass); |
106 |
> |
if (fIgnoreCharge || (li->Charge()!=lj->Charge())) { |
107 |
> |
if (GetFillHist()) fDiElMass->Fill(mass); |
108 |
> |
++nGoodPairs; |
109 |
|
if ((mass>fMinZMass) && (mass<fMaxZMass)) { |
110 |
|
++nZPairs; |
109 |
– |
continue; |
111 |
|
} |
112 |
|
} |
112 |
– |
++nGoodPairs; |
113 |
|
continue; |
114 |
|
} |
115 |
|
} |
116 |
|
} |
117 |
|
|
118 |
< |
fNLeptons->Fill(nLeps); |
119 |
< |
fNGPairs->Fill(nGoodPairs); |
120 |
< |
fNZPairs->Fill(nZPairs); |
121 |
< |
fNAccCounters->Fill(2); |
122 |
< |
|
123 |
< |
// cut on number of Z pairs |
124 |
< |
if (nZPairs>=1) { |
125 |
< |
SkipEvent(); |
126 |
< |
return; |
118 |
> |
if (GetFillHist()) { |
119 |
> |
fNLeptons->Fill(nLeps); |
120 |
> |
fNGPairs->Fill(nGoodPairs); |
121 |
> |
fNZPairs->Fill(nZPairs); |
122 |
> |
fNAccCounters->Fill(2); |
123 |
|
} |
124 |
|
|
129 |
– |
fNAccCounters->Fill(3); |
130 |
– |
|
125 |
|
// cut on number of good pairs |
126 |
|
if (nGoodPairs<1) { |
127 |
|
SkipEvent(); |
128 |
|
return; |
129 |
|
} |
130 |
|
|
131 |
< |
fNAccCounters->Fill(4); |
132 |
< |
for (UInt_t i=0; i<nLeps; ++i) { |
133 |
< |
const Particle *li = leptons->At(i); |
134 |
< |
|
135 |
< |
if (li->Pt()<fMinPt) |
136 |
< |
continue; |
137 |
< |
|
138 |
< |
for (UInt_t j=0; j<i; ++j) { |
139 |
< |
const Particle *lj = leptons->At(j); |
140 |
< |
|
141 |
< |
if (lj->Pt()<fMinPt) |
142 |
< |
continue; |
143 |
< |
|
144 |
< |
CompositeParticle dil; |
145 |
< |
dil.AddDaughter(li); |
146 |
< |
dil.AddDaughter(lj); |
147 |
< |
Double_t mass = dil.Mass(); |
148 |
< |
if (mass<fDilMinMass) |
149 |
< |
continue; |
150 |
< |
|
151 |
< |
fAllDiLepMassAcc->Fill(mass); |
152 |
< |
|
153 |
< |
if (li->ObjType()!=lj->ObjType()) { |
154 |
< |
fElMuMassAcc->Fill(mass); |
155 |
< |
continue; |
156 |
< |
} |
131 |
> |
if (GetFillHist()) { |
132 |
> |
|
133 |
> |
fNAccCounters->Fill(3); |
134 |
> |
|
135 |
> |
for (UInt_t i=0; i<nLeps; ++i) { |
136 |
> |
const Particle *li = leptons->At(i); |
137 |
> |
|
138 |
> |
if (li->Pt()<fMinPt) |
139 |
> |
continue; |
140 |
> |
|
141 |
> |
for (UInt_t j=0; j<i; ++j) { |
142 |
> |
const Particle *lj = leptons->At(j); |
143 |
> |
|
144 |
> |
if (lj->Pt()<fMinPt) |
145 |
> |
continue; |
146 |
> |
|
147 |
> |
CompositeParticle dil; |
148 |
> |
dil.AddDaughter(li); |
149 |
> |
dil.AddDaughter(lj); |
150 |
> |
Double_t mass = dil.Mass(); |
151 |
> |
if (mass<fDilMinMass) |
152 |
> |
continue; |
153 |
> |
|
154 |
> |
fAllDiLepMassAcc->Fill(mass); |
155 |
> |
|
156 |
> |
if (li->ObjType()!=lj->ObjType()) { |
157 |
> |
if (li->Charge()!=lj->Charge()) { |
158 |
> |
fElMuMassAcc->Fill(mass); |
159 |
> |
} |
160 |
> |
continue; |
161 |
> |
} |
162 |
|
|
163 |
< |
if (li->Is(kMuon)) { |
164 |
< |
if (li->Charge()!=lj->Charge()) { |
165 |
< |
fDiMuMassAcc->Fill(mass); |
166 |
< |
continue; |
167 |
< |
} |
168 |
< |
} |
163 |
> |
if (li->Is(kMuon)) { |
164 |
> |
if (li->Charge()!=lj->Charge()) { |
165 |
> |
fDiMuMassAcc->Fill(mass); |
166 |
> |
} |
167 |
> |
continue; |
168 |
> |
} |
169 |
|
|
170 |
< |
if (li->Is(kElectron)) { |
171 |
< |
if (fIgnoreElCharge || (li->Charge()!=lj->Charge())) { |
172 |
< |
fDiElMassAcc->Fill(mass); |
173 |
< |
} |
174 |
< |
continue; |
170 |
> |
if (li->Is(kElectron)) { |
171 |
> |
if (li->Charge()!=lj->Charge()) { |
172 |
> |
fDiElMassAcc->Fill(mass); |
173 |
> |
} |
174 |
> |
continue; |
175 |
> |
} |
176 |
|
} |
177 |
|
} |
178 |
|
} |
183 |
|
{ |
184 |
|
// Create and add histograms to the output list. |
185 |
|
|
186 |
< |
AddTH1(fNAccCounters,"hNAccCounters",";cut;#",25,-0.5,24.5); |
187 |
< |
if (1) { |
188 |
< |
TAxis *xa = fNAccCounters->GetXaxis(); |
189 |
< |
for(Int_t i=1;i<=fNAccCounters->GetNbinsX();++i) |
190 |
< |
xa->SetBinLabel(i,"unused"); |
191 |
< |
xa->SetBinLabel(1,"Enter"); |
192 |
< |
xa->SetBinLabel(2,"Objs"); |
193 |
< |
xa->SetBinLabel(3,"2Lep"); |
194 |
< |
xa->SetBinLabel(4,"ZPair"); |
195 |
< |
xa->SetBinLabel(5,"GPair"); |
196 |
< |
xa->SetRangeUser(0,4); |
197 |
< |
} |
198 |
< |
AddTH1(fAllDiLepMass,"hAllDiLepMass",";m_{ll} [GeV];#",150,0,300); |
199 |
< |
AddTH1(fDiElMass,"hDiElMass",";m_{ll} [GeV];#",150,0,300); |
200 |
< |
AddTH1(fDiMuMass,"hDiMuMass",";m_{ll} [GeV];#",150,0,300); |
201 |
< |
AddTH1(fElMuMass,"hElMuMass",";m_{ll} [GeV];#",150,0,300); |
202 |
< |
AddTH1(fAllDiLepMassAcc,"hAllDiLepMassAcc",";m_{ll} [GeV];#",150,0,300); |
203 |
< |
AddTH1(fDiElMassAcc,"hDiElMassAcc",";m_{ll} [GeV];#",150,0,300); |
204 |
< |
AddTH1(fDiMuMassAcc,"hDiMuMassAcc",";m_{ll} [GeV];#",150,0,300); |
205 |
< |
AddTH1(fElMuMassAcc,"hElMuMassAcc",";m_{ll} [GeV];#",150,0,300); |
206 |
< |
AddTH1(fNLeptons,"hNLeptons",";leptons;#",10,-0.5,9.5); |
207 |
< |
AddTH1(fNGPairs,"hNGoodPairs",";leptons;#",10,-0.5,9.5); |
208 |
< |
AddTH1(fNZPairs,"hNZPairs",";leptons;#",10,-0.5,9.5); |
186 |
> |
if (GetFillHist()) { |
187 |
> |
AddTH1(fNAccCounters,"hNAccCounters",";cut;#",4,-0.5,3.5); |
188 |
> |
if (1) { |
189 |
> |
TAxis *xa = fNAccCounters->GetXaxis(); |
190 |
> |
for(Int_t i=1;i<=fNAccCounters->GetNbinsX();++i) |
191 |
> |
xa->SetBinLabel(i,"unused"); |
192 |
> |
xa->SetBinLabel(1,"Enter"); |
193 |
> |
xa->SetBinLabel(2,"Objs"); |
194 |
> |
xa->SetBinLabel(3,"2Lep"); |
195 |
> |
xa->SetBinLabel(4,"GPair"); |
196 |
> |
xa->SetRangeUser(0,3); |
197 |
> |
} |
198 |
> |
AddTH1(fAllDiLepMass,"hAllDiLepMass",";m_{ll} [GeV];#",150,0,300); |
199 |
> |
AddTH1(fDiElMass,"hDiElMass",";m_{ll} [GeV];#",150,0,300); |
200 |
> |
AddTH1(fDiMuMass,"hDiMuMass",";m_{ll} [GeV];#",150,0,300); |
201 |
> |
AddTH1(fElMuMass,"hElMuMass",";m_{ll} [GeV];#",150,0,300); |
202 |
> |
AddTH1(fAllDiLepMassAcc,"hAllDiLepMassAcc",";m_{ll} [GeV];#",150,0,300); |
203 |
> |
AddTH1(fDiElMassAcc,"hDiElMassAcc",";m_{ll} [GeV];#",150,0,300); |
204 |
> |
AddTH1(fDiMuMassAcc,"hDiMuMassAcc",";m_{ll} [GeV];#",150,0,300); |
205 |
> |
AddTH1(fElMuMassAcc,"hElMuMassAcc",";m_{ll} [GeV];#",150,0,300); |
206 |
> |
AddTH1(fNLeptons,"hNLeptons",";leptons;#",10,-0.5,9.5); |
207 |
> |
AddTH1(fNGPairs,"hNGoodPairs",";leptons;#",10,-0.5,9.5); |
208 |
> |
AddTH1(fNZPairs,"hNZPairs",";leptons;#",10,-0.5,9.5); |
209 |
> |
} |
210 |
|
} |