10#include <ecl/modules/eclDataAnalysis/ECLDataAnalysisModule.h>
13#include <ecl/dataobjects/ECLCalDigit.h>
14#include <ecl/dataobjects/ECLConnectedRegion.h>
15#include <ecl/dataobjects/ECLDigit.h>
16#include <ecl/dataobjects/ECLHit.h>
17#include <ecl/dataobjects/ECLLocalMaximum.h>
18#include <ecl/dataobjects/ECLPidLikelihood.h>
19#include <ecl/dataobjects/ECLShower.h>
20#include <ecl/dataobjects/ECLSimHit.h>
23#include <framework/dataobjects/EventMetaData.h>
24#include <framework/datastore/RelationVector.h>
25#include <framework/gearbox/Const.h>
26#include <framework/logging/Logger.h>
27#include <mdst/dataobjects/ECLCluster.h>
28#include <mdst/dataobjects/EventLevelClusteringInfo.h>
29#include <mdst/dataobjects/MCParticle.h>
30#include <mdst/dataobjects/Track.h>
55 m_eclSimHits(eclSimHitArrayName()),
56 m_eclHits(eclHitArrayName()),
57 m_eclDigits(eclDigitArrayName()),
58 m_eclCalDigits(eclCalDigitArrayName()),
59 m_eclConnectedRegions(eclConnectedRegionArrayName()),
60 m_eclShowers(eclShowerArrayName()),
61 m_eclClusters(eclClusterArrayName()),
62 m_eclLocalMaximums(eclLocalMaximumArrayName()),
63 m_eclPureDigits(eclPureDigitArrayName()),
64 m_eclPureCalDigits(eclPureCalDigitArrayName()),
65 m_eclPureConnectedRegions(eclPureConnectedRegionArrayName()),
66 m_eclPureShowers(eclPureShowerArrayName()),
67 m_eclPureClusters(eclPureClusterArrayName()),
68 m_eclPureLocalMaximums(eclPureLocalMaximumArrayName()),
80 m_eclDigitFitQuality(0),
81 m_eclDigitToCalDigit(0),
83 m_eclCalDigitMultip(0),
85 m_eclCalDigitToMC1(0),
86 m_eclCalDigitToMC1PDG(0),
87 m_eclCalDigitToMCWeight1(0),
88 m_eclCalDigitToMC2(0),
89 m_eclCalDigitToMC2PDG(0),
90 m_eclCalDigitToMCWeight2(0),
91 m_eclCalDigitToMC3(0),
92 m_eclCalDigitToMC3PDG(0),
93 m_eclCalDigitToMCWeight3(0),
94 m_eclCalDigitToMC4(0),
95 m_eclCalDigitToMC4PDG(0),
96 m_eclCalDigitToMCWeight4(0),
97 m_eclCalDigitToMC5(0),
98 m_eclCalDigitToMC5PDG(0),
99 m_eclCalDigitToMCWeight5(0),
100 m_eclCalDigitToBkgWeight(0),
101 m_eclCalDigitSimHitSum(0),
102 m_eclCalDigitToShower(0),
103 m_eclCalDigitCellId(0),
105 m_eclCalDigitTimeFit(0),
106 m_eclCalDigitFitQuality(0),
107 m_eclCalDigitToCR(0),
108 m_eclCalDigitToLM(0),
112 m_eclCRLikelihoodMIPNGamma(0),
113 m_eclCRLikelihoodChargedHadron(0),
114 m_eclCRLikelihoodElectronNGamma(0),
115 m_eclCRLikelihoodNGamma(0),
116 m_eclCRLikelihoodNeutralHadron(0),
117 m_eclCRLikelihoodMergedPi0(0),
124 m_eclSimHitMultip(0),
127 m_eclSimHitCellId(0),
129 m_eclSimHitEnergyDep(0),
130 m_eclSimHitFlightTime(0),
142 m_eclHitToDigitAmp(0),
143 m_eclHitToPureDigit(0),
144 m_eclHitToPureDigitAmp(0),
146 m_eclHitEnergyDep(0),
149 m_eclClusterMultip(0),
150 m_eclClusterTrueMultip(0),
151 m_eclClusterGammaMultip(0),
153 m_eclClusterToMC1(0),
154 m_eclClusterToMCWeight1(0),
155 m_eclClusterToMC1PDG(0),
156 m_eclClusterToMC2(0),
157 m_eclClusterToMCWeight2(0),
158 m_eclClusterToMC2PDG(0),
159 m_eclClusterToMC3(0),
160 m_eclClusterToMCWeight3(0),
161 m_eclClusterToMC3PDG(0),
162 m_eclClusterToMC4(0),
163 m_eclClusterToMCWeight4(0),
164 m_eclClusterToMC4PDG(0),
165 m_eclClusterToMC5(0),
166 m_eclClusterToMCWeight5(0),
167 m_eclClusterToMC5PDG(0),
168 m_eclClusterToBkgWeight(0),
169 m_eclClusterSimHitSum(0),
170 m_eclClusterToShower(0),
171 m_eclClusterEnergy(0),
172 m_eclClusterEnergyError(0),
173 m_eclClusterTheta(0),
174 m_eclClusterThetaError(0),
176 m_eclClusterPhiError(0),
178 m_eclClusterEnergyDepSum(0),
179 m_eclClusterTiming(0),
180 m_eclClusterTimingError(0),
181 m_eclClusterE9oE21(0),
182 m_eclClusterHighestE(0),
183 m_eclClusterCellId(0),
184 m_eclClusterNofCrystals(0),
185 m_eclClusterCrystalHealth(0),
186 m_eclClusterIsTrack(0),
187 m_eclClusterClosestTrackDist(0),
188 m_eclClusterDeltaL(0),
189 m_eclClusterAbsZernike40(0),
190 m_eclClusterAbsZernike51(0),
191 m_eclClusterZernikeMVA(0),
192 m_eclClusterE1oE9(0),
193 m_eclClusterSecondMoment(0),
195 m_eclClusterDeltaTime99(0),
196 m_eclClusterDetectorRegion(0),
197 m_eclClusterHasNPhotonHypothesis(0),
198 m_eclClusterHasNeutralHadronHypothesis(0),
201 m_eclPureDigitMultip(0),
202 m_eclPureDigitIdx(0),
203 m_eclPureDigitToMC(0),
204 m_eclPureDigitCellId(0),
205 m_eclPureDigitAmp(0),
206 m_eclPureDigitTimeFit(0),
207 m_eclPureDigitFitQuality(0),
208 m_eclPureDigitToCluster(0),
210 m_eclPureCalDigitMultip(0),
211 m_eclPureCalDigitIdx(0),
212 m_eclPureCalDigitToMC1(0),
213 m_eclPureCalDigitToMC1PDG(0),
214 m_eclPureCalDigitToMCWeight1(0),
215 m_eclPureCalDigitToMC2(0),
216 m_eclPureCalDigitToMC2PDG(0),
217 m_eclPureCalDigitToMCWeight2(0),
218 m_eclPureCalDigitToMC3(0),
219 m_eclPureCalDigitToMC3PDG(0),
220 m_eclPureCalDigitToMCWeight3(0),
221 m_eclPureCalDigitToMC4(0),
222 m_eclPureCalDigitToMC4PDG(0),
223 m_eclPureCalDigitToMCWeight4(0),
224 m_eclPureCalDigitToMC5(0),
225 m_eclPureCalDigitToMC5PDG(0),
226 m_eclPureCalDigitToMCWeight5(0),
227 m_eclPureCalDigitToBkgWeight(0),
228 m_eclPureCalDigitSimHitSum(0),
229 m_eclPureCalDigitToShower(0),
230 m_eclPureCalDigitCellId(0),
231 m_eclPureCalDigitAmp(0),
232 m_eclPureCalDigitTimeFit(0),
233 m_eclPureCalDigitFitQuality(0),
234 m_eclPureCalDigitToCR(0),
235 m_eclPureCalDigitToLM(0),
238 m_eclPureCRIsTrack(0),
239 m_eclPureCRLikelihoodMIPNGamma(0),
240 m_eclPureCRLikelihoodChargedHadron(0),
241 m_eclPureCRLikelihoodElectronNGamma(0),
242 m_eclPureCRLikelihoodNGamma(0),
243 m_eclPureCRLikelihoodNeutralHadron(0),
244 m_eclPureCRLikelihoodMergedPi0(0),
246 m_eclPureLMMultip(0),
249 m_eclPureLMCellId(0),
251 m_eclPureClusterMultip(0),
252 m_eclPureClusterIdx(0),
253 m_eclPureClusterToMC1(0),
254 m_eclPureClusterToMCWeight1(0),
255 m_eclPureClusterToMC1PDG(0),
256 m_eclPureClusterToMC2(0),
257 m_eclPureClusterToMCWeight2(0),
258 m_eclPureClusterToMC2PDG(0),
259 m_eclPureClusterToMC3(0),
260 m_eclPureClusterToMCWeight3(0),
261 m_eclPureClusterToMC3PDG(0),
262 m_eclPureClusterToMC4(0),
263 m_eclPureClusterToMCWeight4(0),
264 m_eclPureClusterToMC4PDG(0),
265 m_eclPureClusterToMC5(0),
266 m_eclPureClusterToMCWeight5(0),
267 m_eclPureClusterToMC5PDG(0),
268 m_eclPureClusterToBkgWeight(0),
269 m_eclPureClusterEnergy(0),
270 m_eclPureClusterEnergyError(0),
271 m_eclPureClusterTheta(0),
272 m_eclPureClusterThetaError(0),
273 m_eclPureClusterPhi(0),
274 m_eclPureClusterPhiError(0),
275 m_eclPureClusterR(0),
276 m_eclPureClusterEnergyDepSum(0),
277 m_eclPureClusterTiming(0),
278 m_eclPureClusterTimingError(0),
279 m_eclPureClusterE9oE21(0),
280 m_eclPureClusterHighestE(0),
281 m_eclPureClusterCellId(0),
282 m_eclPureClusterLat(0),
283 m_eclPureClusterNofCrystals(0),
284 m_eclPureClusterCrystalHealth(0),
285 m_eclPureClusterIsTrack(0),
286 m_eclPureClusterDeltaL(0),
287 m_eclPureClusterClosestTrackDist(0),
288 m_eclPureClusterAbsZernike40(0),
289 m_eclPureClusterAbsZernike51(0),
290 m_eclPureClusterZernikeMVA(0),
291 m_eclPureClusterSecondMoment(0),
292 m_eclPureClusterE1oE9(0),
293 m_eclPureClusterDeltaTime99(0),
294 m_eclPureClusterDetectorRegion(0),
295 m_eclPureClusterHasNPhotonHypothesis(0),
296 m_eclPureClusterHasNeutralHadronHypothesis(0),
299 m_eclShowerMultip(0),
302 m_eclShowerToMCWeight1(0),
303 m_eclShowerToMC1PDG(0),
304 m_eclShowerToMC1Moth(0),
305 m_eclShowerToMC1MothPDG(0),
306 m_eclShowerToMC1GMoth(0),
307 m_eclShowerToMC1GMothPDG(0),
309 m_eclShowerToMCWeight2(0),
310 m_eclShowerToMC2PDG(0),
311 m_eclShowerToMC2Moth(0),
312 m_eclShowerToMC2MothPDG(0),
313 m_eclShowerToMC2GMoth(0),
314 m_eclShowerToMC2GMothPDG(0),
316 m_eclShowerToMCWeight3(0),
317 m_eclShowerToMC3PDG(0),
318 m_eclShowerToMC3Moth(0),
319 m_eclShowerToMC3MothPDG(0),
320 m_eclShowerToMC3GMoth(0),
321 m_eclShowerToMC3GMothPDG(0),
323 m_eclShowerToMCWeight4(0),
324 m_eclShowerToMC4PDG(0),
325 m_eclShowerToMC4Moth(0),
326 m_eclShowerToMC4MothPDG(0),
327 m_eclShowerToMC4GMoth(0),
328 m_eclShowerToMC4GMothPDG(0),
330 m_eclShowerToMCWeight5(0),
331 m_eclShowerToMC5PDG(0),
332 m_eclShowerToMC5Moth(0),
333 m_eclShowerToMC5MothPDG(0),
334 m_eclShowerToMC5GMoth(0),
335 m_eclShowerToMC5GMothPDG(0),
336 m_eclShowerToBkgWeight(0),
342 m_eclShowerSimHitSum(0),
343 m_eclShowerUncEnergy(0),
344 m_eclShowerEnergy(0),
349 m_eclShowerE9oE21(0),
352 m_eclShowerConnectedRegionId(0),
353 m_eclShowerHypothesisId(0),
354 m_eclShowerCentralCellId(0),
355 m_eclShowerEnergyError(0),
356 m_eclShowerThetaError(0),
357 m_eclShowerPhiError(0),
358 m_eclShowerTimeResolution(0),
359 m_eclShowerHighestEnergy(0),
360 m_eclShowerLateralEnergy(0),
361 m_eclShowerMinTrkDistance(0),
362 m_eclShowerTrkDepth(0),
363 m_eclShowerShowerDepth(0),
364 m_eclShowerAbsZernike40(0),
365 m_eclShowerAbsZernike51(0),
366 m_eclShowerZernikeMVA(0),
367 m_eclShowerSecondMoment(0),
369 m_eclShowerIsTrack(0),
370 m_eclShowerIsCluster(0),
371 m_eclShowerMCVtxInEcl(0),
372 m_eclShowerMCFlightMatch(0),
373 m_eclShowerMCFFlightMatch(0),
374 m_eclShowerHighestE1mE2(0),
375 m_eclShowerNumberOfCrystalsForEnergy(0),
393 m_mcSecondaryPhysProc(0),
413 m_eclpidNCrystals(0),
414 m_eclpidNClusters(0),
421 setDescription(
"This module produces an ntuple with ECL-related quantities starting from mdst");
423 "set true if you want to save the information in a root file named by parameter 'rootFileName'",
bool(
true));
425 "fileName used for root file where info are saved. Will be ignored if parameter 'writeToRoot' is false (standard)",
426 string(
"eclDataAnalysis"));
427 addParam(
"doTracking",
m_doTracking,
"set true if you want to save the information from TrackFitResults'rootFileName'",
429 addParam(
"doHits",
m_doHits,
"set true if you want to save the Hit and SimHit informations'",
bool(
false));
430 addParam(
"doDigits",
m_doDigits,
"set true if you want to save the Digits and CalDigits informations'",
bool(
false));
431 addParam(
"doPureCsI",
m_doPureCsI,
"set true if you want to save the information for upgrade option'",
bool(
false));
443 B2INFO(
"[ECLDataAnalysis Module]: Starting initialization of ECLDataAnalysis Module.");
488 m_tree =
new TTree(
"m_tree",
"ECL Analysis tree");
841 m_tree->Branch(
"trkPosx",
"std::vector<double>", &
m_trkX);
842 m_tree->Branch(
"trkPosy",
"std::vector<double>", &
m_trkY);
843 m_tree->Branch(
"trkPosz",
"std::vector<double>", &
m_trkZ);
856 B2INFO(
"[ECLDataAnalysis Module]: Initialization of ECLDataAnalysis Module completed.");
868 B2DEBUG(1,
" ++++++++++++++ ECLDataAnalysisModule");
1264 for (
int idigits = 0; idigits <
m_eclDigits.getEntries() ; idigits++) {
1287 for (uint icaldigits = 0; icaldigits < (uint)
m_eclCalDigits.getEntries() ; icaldigits++) {
1298 for (
int i = 0; i < 10; i++)
1302 for (
int i = 0; i < 10; i++)
1309 for (
unsigned int i = 0; i < digitMCRelations.size(); ++i) {
1311 const auto mcParticle = digitMCRelations.object(i);
1312 idx[ii] = mcParticle->
getIndex() - 1;
1313 wi[ii] = digitMCRelations.weight(i);
1314 sumHit = sumHit + digitMCRelations.weight(i);
1322 for (
int i = 0; i < 9; i++) {
1323 if (((idx[i]) > -1) && ((idx[i + 1]) > -1)) {
1324 if (wi[i] < wi[i + 1]) {
1326 idx[i] = idx[i + 1];
1329 double wtemp = wi[i];
1414 for (
int i = 0; i < CRmultip; i++) {
1430 for (
int isimhits = 0; isimhits <
m_eclSimHits.getEntries() ; isimhits++) {
1454 for (
int ihits = 0; ihits <
m_eclHits.getEntries() ; ihits++) {
1491 for (
unsigned int ilms = 0; ilms < (
unsigned int)
m_eclLocalMaximums.getEntries() ; ilms++) {
1500 for (
unsigned int iclusters = 0; iclusters < (
unsigned int)
m_eclClusters.getEntries() ; iclusters++) {
1504 double clusterE = 0.0;
1549 for (
int i = 0; i < 10; i++)
1553 for (
int i = 0; i < 10; i++)
1560 for (
unsigned int i = 0; i < clusterMCRelations.size(); ++i) {
1562 const auto mcParticle = clusterMCRelations.object(i);
1563 idx[ii] = mcParticle->
getIndex() - 1;
1564 wi[ii] = clusterMCRelations.weight(i);
1565 sumHit = sumHit + clusterMCRelations.weight(i);
1573 for (
int i = 0; i < 9; i++) {
1574 if (((idx[i]) > -1) && ((idx[i + 1]) > -1)) {
1575 if (wi[i] < wi[i + 1]) {
1577 idx[i] = idx[i + 1];
1580 double wtemp = wi[i];
1647 for (
int idigits = 0; idigits <
m_eclPureDigits.getEntries() ; idigits++) {
1665 for (uint icaldigits = 0; icaldigits < (uint)
m_eclPureCalDigits.getEntries() ; icaldigits++) {
1676 for (
int i = 0; i < 10; i++)
1680 for (
int i = 0; i < 10; i++)
1687 for (
unsigned int i = 0; i < digitMCRelations.size(); ++i) {
1689 const auto mcParticle = digitMCRelations.object(i);
1690 idx[ii] = mcParticle->
getIndex() - 1;
1691 wi[ii] = digitMCRelations.weight(i);
1692 sumHit = sumHit + digitMCRelations.weight(i);
1700 for (
int i = 0; i < 9; i++) {
1701 if (((idx[i]) > -1) && ((idx[i + 1]) > -1)) {
1702 if (wi[i] < wi[i + 1]) {
1704 idx[i] = idx[i + 1];
1707 double wtemp = wi[i];
1791 for (
int i = 0; i < PureCRmultip; i++) {
1805 for (
unsigned int pure_ilms = 0; pure_ilms < (
unsigned int)
m_eclPureLocalMaximums.getEntries() ; pure_ilms++) {
1813 for (
unsigned int iclusters = 0; iclusters < (
unsigned int)
m_eclPureClusters.getEntries() ; iclusters++) {
1817 double clusterE = 0.0;
1857 for (
int i = 0; i < 10; i++)
1861 for (
int i = 0; i < 10; i++)
1868 for (
unsigned int i = 0; i < clusterMCRelations.size(); ++i) {
1870 const auto mcParticle = clusterMCRelations.object(i);
1871 idx[ii] = mcParticle->
getIndex() - 1;
1872 wi[ii] = clusterMCRelations.weight(i);
1873 sumHit = sumHit + clusterMCRelations.weight(i);
1881 for (
int i = 0; i < 9; i++) {
1882 if (((idx[i]) > -1) && ((idx[i + 1]) > -1)) {
1883 if (wi[i] < wi[i + 1]) {
1885 idx[i] = idx[i + 1];
1888 double wtemp = wi[i];
1953 for (uint ishowers = 0; ishowers < (uint)
m_eclShowers.getEntries() ; ishowers++) {
1989 for (
unsigned int i = 0; i < showerDigitRelations.size(); ++i) {
1990 const auto aECLCalDigits = showerDigitRelations.object(i);
1991 if (aECLCalDigits->getEnergy() > fe) {
1993 fe = aECLCalDigits->getEnergy();
1996 if (fe > 0 && se > 0)
2001 int lm1[5] = { -1, -1, -1, -1, -1};
2004 for (
unsigned int i = 0; i < showerLMRelations.size(); ++i) {
2005 const auto aECLLM = showerLMRelations.object(i);
2017 for (
int i = 0; i < 10; i++)
2021 for (
int i = 0; i < 10; i++)
2028 for (
unsigned int i = 0; i < showerMCRelations.size(); ++i) {
2030 const auto mcParticle = showerMCRelations.object(i);
2031 idx[ii] = mcParticle->
getIndex() - 1;
2032 wi[ii] = showerMCRelations.weight(i);
2033 sumHit = sumHit + showerMCRelations.weight(i);
2041 for (
int i = 0; i < 9; i++) {
2042 if (((idx[i]) > -1) && ((idx[i + 1]) > -1)) {
2043 if (wi[i] < wi[i + 1]) {
2045 idx[i] = idx[i + 1];
2048 double wtemp = wi[i];
2059 for (
unsigned int i = 0; i < showerMCRelations.size(); ++i) {
2060 const auto mcParticle = showerMCRelations.object(i);
2061 if (mcParticle->getSecondaryPhysicsProcess() == 0 && mcParticle->getPDG() ==
Const::Klong.
getPDGCode()) {
2062 double vtxx = mcParticle->getDecayVertex().X();
2063 double vtxy = mcParticle->getDecayVertex().Y();
2064 double vtxz = mcParticle->getDecayVertex().Z();
2065 if ((TMath::Sqrt(vtxx * vtxx + vtxy * vtxy) > 118) || (vtxz > 196.16) || (vtxz < -102.16))
2067 }
else if (mcParticle->getSecondaryPhysicsProcess() != 0 && mcParticle->getMother()->getPDG() ==
Const::Klong.
getPDGCode()) {
2068 double vtxx = mcParticle->getProductionVertex().X();
2069 double vtxy = mcParticle->getProductionVertex().Y();
2070 double vtxz = mcParticle->getProductionVertex().Z();
2071 if ((TMath::Sqrt(vtxx * vtxx + vtxy * vtxy) > 118) || (vtxz > 196.16) || (vtxz < -102.16))
2076 if (no_Primary == 0)
2081 double no_fMatch = 0;
2082 double no_fFMatch = 0;
2084 for (
unsigned int i = 0; i < showerMCRelations.size(); ++i) {
2085 const auto mcParticle = showerMCRelations.object(i);
2086 if (mcParticle->getSecondaryPhysicsProcess() == 0) {
2087 double vtxx = mcParticle->getDecayVertex().X();
2088 double vtxy = mcParticle->getDecayVertex().Y();
2089 double vtxz = mcParticle->getDecayVertex().Z();
2090 double px = mcParticle->getMomentum().X();
2091 double py = mcParticle->getMomentum().Y();
2092 double pz = mcParticle->getMomentum().Z();
2093 double p = TMath::Sqrt(px * px + py * py + pz * pz);
2094 double pTheta = TMath::ACos(pz / p);
2098 pPhi = TMath::ATan(py / px);
2100 pPhi = TMath::ATan(py / px) + M_PI;
2103 pPhi = TMath::ATan(py / px) ;
2105 pPhi = TMath::ATan(py / px) - M_PI;
2107 if ((TMath::Sqrt(vtxx * vtxx + vtxy * vtxy) > 118) || (vtxz > 196.16) || (vtxz < -102.16)) {
2108 if (TMath::Abs(aECLShowers->
getTheta() - pTheta) < 0.05 && TMath::Abs(aECLShowers->
getPhi() - pPhi) < 0.05)
2113 double vtxx = mcParticle->getProductionVertex().X();
2114 double vtxy = mcParticle->getProductionVertex().Y();
2115 double vtxz = mcParticle->getProductionVertex().Z();
2120 double p = TMath::Sqrt(px * px + py * py + pz * pz);
2121 double pTheta = TMath::ACos(pz / p);
2125 pPhi = TMath::ATan(py / px);
2127 pPhi = TMath::ATan(py / px) + M_PI;
2130 pPhi = TMath::ATan(py / px) ;
2132 pPhi = TMath::ATan(py / px) - M_PI;
2134 if ((TMath::Sqrt(vtxx * vtxx + vtxy * vtxy) > 118) || (vtxz > 196.16) || (vtxz < -102.16)) {
2135 if (TMath::Abs(aECLShowers->
getTheta() - pTheta) < 0.05 && TMath::Abs(aECLShowers->
getPhi() - pPhi) < 0.05)
2146 if (no_fFMatch == 1)
2156 if (amcParticle->
getMother() !=
nullptr) {
2186 if (amcParticle->
getMother() !=
nullptr) {
2216 if (amcParticle->
getMother() !=
nullptr) {
2246 if (amcParticle->
getMother() !=
nullptr) {
2276 if (amcParticle->
getMother() !=
nullptr) {
2339 if (atrk ==
nullptr)
continue;
2356 if (eclpid !=
nullptr) {
int getPDGCode() const
PDG code.
static const ChargedStable muon
muon particle
static const ChargedStable pion
charged pion particle
static const ParticleType Klong
K^0_L particle.
static const ChargedStable electron
electron particle
Class to store calibrated ECLDigits: ECLCalDigits.
int getCellId() const
Get Cell ID.
double getEnergy() const
Get Calibrated Energy.
double getTime() const
Get Calibrated Time.
unsigned short getMaxECellId() const
Return cellID of maximum energy crystal.
bool isTrack() const
Return true if the cluster matches with track.
bool hasHypothesis(EHypothesisBit bitmask) const
Return if specific hypothesis bit is set.
double getPhi() const
Return Corrected Phi of Shower (radian).
double getE1oE9() const
Return E1/E9 (shower shape variable).
double getDeltaL() const
Return deltaL.
double getR() const
Return R.
double getEnergyRaw() const
Return Uncorrected Energy deposited (GeV)
double getUncertaintyTheta() const
Return Uncertainty on Theta of Shower.
double getLAT() const
Return LAT (shower shape variable).
double getE9oE21() const
Return E9/E21 (shower shape variable).
int getDetectorRegion() const
Return detector region: 0: below acceptance, 1: FWD, 2: BRL, 3: BWD, 11: FWDGAP, 13: BWDGAP.
unsigned short getStatus() const
Return status.
double getEnergy(EHypothesisBit hypothesis) const
Return Energy (GeV).
double getUncertaintyEnergy() const
Return Uncertainty on Energy of Shower.
double getMinTrkDistance() const
Get distance between cluster COG and track extrapolation to ECL.
double getNumberOfCrystals() const
Return number of a crystals in a shower (sum of weights).
double getEnergyHighestCrystal() const
Return energy of highest energetic crystal in cluster (GeV)
double getZernikeMVA() const
Return MVA based hadron/photon value based on Zernike moments (shower shape variable).
double getUncertaintyPhi() const
Return Uncertainty on Phi of Shower.
double getAbsZernike40() const
Return Zernike moment 40 (shower shape variable).
double getSecondMoment() const
Return second moment (shower shape variable).
double getTheta() const
Return Corrected Theta of Shower (radian).
double getDeltaTime99() const
Return cluster delta time 99.
double getTime() const
Return cluster time.
@ c_nPhotons
CR is split into n photons (N1)
@ c_neutralHadron
CR is reconstructed as a neutral hadron (N2)
double getAbsZernike51() const
Return Zernike moment 51 (shower shape variable).
Class to store connected regions (CRs)
float getLikelihoodChargedHadron() const
Get Charged Hadron likelihood (ECL based only) T2.
bool isTrack() const
Get boolean to flag if a track is matched to the CR.
float getLikelihoodNeutralHadron() const
Get Neutral Hadron likelihood (ECL based only) N2.
float getLikelihoodMIPNGamma() const
Get MIPNGamma likelihood (ECL based only) T1.
float getLikelihoodNGamma() const
Get NGamma likelihood (ECL based only) N1.
int getCRId() const
Get CR identifier.
float getLikelihoodMergedPi0() const
Get Merged Pi0 likelihood (ECL based only) N3.
float getLikelihoodElectronNGamma() const
Get ElectronNGamma likelihood (ECL based only) T3.
std::vector< int > * m_eclClusterToMC4PDG
PDG code of fourth MCParticle related to ECLCluster.
std::vector< int > * m_eclShowerToLM5
Index of 5th maximum related to ECLShower.
std::vector< int > * m_eclShowerToMC2PDG
PDG code of second MCParticle related to ECLShower.
std::vector< double > * m_eclShowerTimeResolution
Shower Time Resolution.
bool m_doPureCsI
if true, info on pureCsI upgrade is stored
std::vector< int > * m_eclPureCalDigitToMC5PDG
PDG code of fifth MCParticle related to CalDigit, PureCsI option.
std::string m_rootFileName
name of the root file
std::vector< double > * m_eclPureCalDigitToMCWeight5
Energy contribution of fifth MCParticle related to CalDigit, PureCsI option.
std::vector< int > * m_eclShowerToMC5GMothPDG
PDG code of Gparent of fifth MCParticle related to ECLShower.
virtual const char * eclShowerArrayName() const
Default name ECLShower array.
std::vector< double > * m_eclLogLikeEl
PID track electron likelihood.
int m_eclDigitMultip
Number of ECLDigits per event.
std::vector< double > * m_eclClusterToMCWeight5
Energy contribution of 5th MCParticle related to ECLCluster.
bool m_doHits
if true, info on Hits and SimHits is stored
std::vector< int > * m_eclShowerToMC4MothPDG
PDG code of parent of fourth MCParticle related to ECLShower.
std::vector< double > * m_mcPy
MCParticle momentum Y direction.
std::vector< double > * m_eclCalDigitToMCWeight1
Energy contribution of first MCParticle related to ECLCalDigit.
std::vector< double > * m_eclClusterTheta
ECLCluster polar direction.
std::vector< int > * m_eclClusterNofCrystals
Number of crystals in ECLCluster.
std::vector< double > * m_eclPureClusterToBkgWeight
Remaining energy contribution not associated to first five MCParticles related to ECLCluster,...
std::vector< double > * m_eclPureCRLikelihoodNeutralHadron
Connected Region Neutral Hadron Likelihood, PureCsI option.
std::vector< int > * m_eclPureCalDigitToMC3PDG
PDG code of third MCParticle related to CalDigit, PureCsI option.
virtual const char * eclClusterArrayName() const
Default name ECLClusters array.
std::vector< int > * m_eclClusterDetectorRegion
Cluster Detector Region.
std::vector< int > * m_eclPureCalDigitToMC2
Index of second MCParticle related to CalDigit, PureCsI option.
std::vector< double > * m_eclCalDigitToMCWeight2
Energy contribution of second MCParticle related to ECLCalDigit.
ECLDataAnalysisModule()
Constructor of the module.
std::vector< int > * m_eclCRIdx
Connected Region ID.
std::vector< int > * m_eclClusterCellId
CellId with highest energy deposit in ECLCluster.
std::vector< int > * m_eclPureCalDigitToShower
Index of ECLShower related to that CalDigit, PureCsI option.
std::vector< int > * m_eclHitToMC
Index of MCParticle related to ECLHit.
std::vector< int > * m_eclClusterToMC3PDG
PDG code of third MCParticle related to ECLCluster.
std::vector< double > * m_eclCRLikelihoodElectronNGamma
Connected Region Electron Likelihood.
std::vector< double > * m_eclCalDigitTimeFit
ECLCalDigit timing.
std::vector< double > * m_eclPureClusterDeltaL
Reconstructed Cluster DeltaL, PureCsI option.
TTree * m_tree
Root tree and file for saving the output.
StoreArray< ECLShower > m_eclShowers
Store array: ECLShower.
std::vector< double > * m_eclCalDigitToMCWeight5
Energy contribution of fifth MCParticle related to ECLCalDigit.
std::vector< double > * m_eclSimHitFlightTime
ECLSimhit Flight Time.
std::vector< int > * m_eclClusterIdx
ECLCluster index.
std::vector< int > * m_eclPureClusterToMC5
Index of fifth MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_eclPureCalDigitToBkgWeight
Remaining energy contribution not associated to first five MCParticles related to CalDigit,...
std::vector< double > * m_eclShowerEnergyError
Shower Energy Error.
StoreArray< ECLConnectedRegion > m_eclConnectedRegions
Store array: ECLConnectedRegion.
std::vector< double > * m_eclShowerTime
Shower Timing.
int m_trkMultip
Track Multiplicity.
std::vector< double > * m_eclShowerTheta
Shower Theta.
std::vector< double > * m_eclShowerShowerDepth
Shower Depth.
std::vector< int > * m_eclShowerToMC4GMoth
GMother index of fourth MCParticle related to ECLShower.
std::vector< double > * m_eclCalDigitToMCWeight4
Energy contribution of fourth MCParticle related to ECLCalDigit.
std::vector< int > * m_eclPureCalDigitCellId
Number of CalDigit CellId, PureCsI option.
std::vector< double > * m_eclClusterR
ECLCluster distance from IP.
int m_iExperiment
Experiment number.
virtual const char * eclSimHitArrayName() const
Default name ECLCalDigits array.
std::vector< bool > * m_eclPureClusterIsTrack
Flag for charged clusters, PureCsI option.
std::vector< int > * m_eclPureCalDigitToMC1
Index of first MCParticle related to CalDigit, PureCsI option.
bool m_writeToRoot
if true, a rootFile named by m_rootFileName will be filled with info
std::vector< int > * m_eclPureClusterToMC5PDG
PDG code of fifth MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_eclShowerE9oE21
Shower E9oE21.
std::vector< double > * m_eclPureClusterTimingError
Cluster time error, PureCsI option.
std::vector< int > * m_eclPureClusterToMC3
Index of third MCParticle related to ECLCluster, PureCsI option.
std::vector< int > * m_eclPureDigitToCluster
ECLDigit To Cluster, PureCsI option.
bool m_doDigits
if true, info on Digits and CalDigits is stored
std::vector< double > * m_eclPureClusterEnergyDepSum
Cluster simulated energy, PureCsI option.
virtual const char * eclPureClusterArrayName() const
Default name ECLPureClusters array.
std::vector< double > * m_eclShowerNumberOfCrystalsForEnergy
Number of crystals used for energy calculation.
std::vector< bool > * m_eclShowerIsCluster
Shower Cluster Match.
std::vector< int > * m_eclPureClusterToMC3PDG
PDG code of third MCParticle related to ECLCluster, PureCsI option.
std::vector< int > * m_eclCalDigitToMC2PDG
PDG code of second MCParticle related to ECLCalDigit.
std::vector< double > * m_mcDecayVtxZ
MCParticle decay vertex Z.
std::vector< int > * m_eclPureDigitToMC
Index of MCParticle related to that ECLDigit, PureCsI option.
std::vector< int > * m_eclClusterToMC5PDG
PDG code of fifth MCParticle related to ECLCluster.
std::vector< double > * m_eclPureClusterZernikeMVA
Output of MVA classifier based on Zernike Momenta, PureCsI option.
std::vector< double > * m_eclSimHitX
ECLSimHit X position.
virtual void initialize() override
Initializes the Module.
std::vector< int > * m_eclCalDigitToMC2
Index of second MCParticle related to ECLCalDigit.
StoreArray< ECLCalDigit > m_eclPureCalDigits
Store array: ECLPureCalDigit.
std::vector< int > * m_eclShowerHypothesisId
Shower Particle Hypothesis ID.
std::vector< double > * m_eclSimHitPz
ECLSimHit PZ.
std::vector< int > * m_eclShowerMCVtxInEcl
Int, 1 if particle decays (interacts) in ECL, 0 otherwise.
std::vector< int > * m_eclPureCalDigitToCR
Index of CR related to that CalDigit, PureCsI option.
std::vector< double > * m_eclShowerToMCWeight4
Energy contribution of fourth MCParticle related to ECLShower.
std::vector< double > * m_eclPureClusterDeltaTime99
Reconstructed DeltaT99, PureCsI option.
int m_eclHitMultip
Number of ECLHits per event.
std::vector< double > * m_eclClusterZernikeMVA
Zernike MVA.
std::vector< int > * m_eclShowerToMC5PDG
PDG code of fifth MCParticle related to ECLShower.
std::vector< int > * m_eclShowerToMC3PDG
PDG code of third MCParticle related to ECLShower.
std::vector< int > * m_eclPureLMType
Local Maximum type, PureCsI option.
std::vector< int > * m_trkCharge
Track charge.
std::vector< int > * m_eclShowerToMC2
Index of second MCParticle related to ECLShower.
std::vector< double > * m_eclShowerToBkgWeight
Remaining energy contribution not associated to first five MCParticles related to ECLShower.
std::vector< double > * m_trkPx
Track momentum along X direction.
std::vector< double > * m_eclPureClusterAbsZernike51
Reconstructed Zernike51, PureCsI option.
std::vector< int > * m_eclDigitToMC
Index of MCParticle related to that ECLDigit.
std::vector< double > * m_eclPureCRLikelihoodMergedPi0
Connected Region Merged Pi0 Likelihood, PureCsI option.
std::vector< double > * m_eclCRLikelihoodMIPNGamma
Connected Region MIP Likelihood.
std::vector< int > * m_eclClusterToMC4
Index of fourth MCParticle related to ECLCluster.
virtual const char * eclHitArrayName() const
Default name ECLCalDigits array.
std::vector< int > * m_eclSimHitCellId
ECLSimHit CellId.
StoreArray< ECLLocalMaximum > m_eclLocalMaximums
Store array: ECLLocalMaximum.
virtual void event() override
event
std::vector< double > * m_eclCRLikelihoodNeutralHadron
Connected Region Neutral Hadron Likelihood.
std::vector< double > * m_eclPureClusterTiming
Cluster time, PureCsI option.
std::vector< double > * m_trkZ
Track DOCA Z (?)
std::vector< double > * m_eclCalDigitSimHitSum
Full energy contribution related to ECLCalDigit.
std::vector< int > * m_eclPureClusterHasNPhotonHypothesis
Cluster has n-photon hypothesis, PureCsI option.
std::vector< double > * m_eclPureCalDigitToMCWeight4
Energy contribution of fourth MCParticle related to CalDigit, PureCsI option.
virtual const char * eclLocalMaximumArrayName() const
Default name ECLLocalMaxima array.
std::vector< int > * m_eclCalDigitFitQuality
ECLCalDigit fit quality.
std::vector< int > * m_eclShowerToMC5GMoth
GMother index of fifth MCParticle related to ECLShower.
std::vector< int > * m_eclCalDigitToMC4
Index of fourth MCParticle related to ECLCalDigit.
std::vector< double > * m_eclHitEnergyDep
ECLHit energy.
std::vector< double > * m_eclCRLikelihoodChargedHadron
Connected Region Charged Hadron Likelihood.
std::vector< int > * m_eclShowerMCFlightMatch
Int, 1 if particle flight direction is "well" reconstructed in ECL, 0 otherwise.
std::vector< double > * m_eclClusterPhi
ECLCluster azimuthal direction.
std::vector< double > * m_eclClusterAbsZernike40
Reconstructed Abs Zernike40.
int m_eclCalDigitMultip
Number of ECLCalDigits per event.
std::vector< int > * m_eclShowerToMC4Moth
Mother index of fourth MCParticle related to ECLShower.
std::vector< int > * m_eclShowerToMC3GMoth
GMother index of third MCParticle related to ECLShower.
std::vector< double > * m_eclPureClusterHighestE
Highest energy deposit (per crystal) in Cluster, PureCsI option.
std::vector< int > * m_eclClusterHasNPhotonHypothesis
Cluster has n-photon hypothesis.
std::vector< int > * m_eclPureClusterToMC2PDG
PDG code of second MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_eclShowerToMCWeight2
Energy contribution of second MCParticle related to ECLShower.
std::vector< int > * m_eclShowerToMC1PDG
PDG code of first MCParticle related to ECLShower.
uint16_t m_nECLCalDigitsOutOfTimeFWD
Number of out of time, energetic ECLCalDigits, FWD.
std::vector< double > * m_eclSimHitEnergyDep
Energy deposition of ECLSimHit.
std::vector< int > * m_eclPureCalDigitToMC2PDG
PDG code of second MCParticle related to CalDigit, PureCsI option.
std::vector< double > * m_trkPz
Track momentum along Z direction.
std::vector< double > * m_eclClusterToMCWeight1
Energy contribution of first MCParticle related to ECLCluster.
std::vector< int > * m_eclShowerToLM2
Index of 2nd maximum related to ECLShower.
std::vector< int > * m_eclPureCalDigitToMC4
Index of fourth MCParticle related to CalDigit, PureCsI option.
std::vector< int > * m_eclPureClusterNofCrystals
Number of crystals in Cluster, PureCsI option.
std::vector< int > * m_eclHitToPureDigit
Index of ECLDigit related to ECLHit, PureCsI option.
std::vector< int > * m_eclShowerToMC3GMothPDG
PDG code of Gparent of third MCParticle related to ECLShower.
virtual void endRun() override
endRun
int m_eclPureClusterMultip
Number of ECLClusterss per event, PureCsI option.
std::vector< double > * m_eclShowerMinTrkDistance
Shower Min Dist to Track.
std::vector< double > * m_eclSimHitPx
ECLSimHit PX.
std::vector< int > * m_eclPureClusterCellId
CellId with highest energy deposit in Cluster, PureCsI option.
std::vector< int > * m_eclCalDigitToShower
Index of ECLShower related to that ECLCalDigit.
std::vector< double > * m_eclSimHitZ
ECLSimHit Z position.
std::vector< double > * m_eclClusterThetaError
ECLCluster error on polar direction.
uint8_t m_nECLShowersRejectedBWD
Number of photon showers that are rejected before storing to mdst (max.
std::vector< int > * m_eclPureClusterToMC2
Index of second MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_eclClusterAbsZernike51
Reconstructed Abs Zernike51.
StoreArray< TrackFitResult > m_trackFitResults
TrackFitResult storeArray.
std::vector< int > * m_eclDigitAmp
ECLDigit amplitude.
std::vector< double > * m_trkPy
Track momentum along Y direction.
std::vector< double > * m_eclClusterEnergyDepSum
ECLCluster simulated energy.
std::vector< double > * m_eclPureClusterThetaError
Cluster error on polar direction, PureCsI option.
std::vector< int > * m_eclPureDigitIdx
ECLDigit index, PureCsI option.
std::vector< int > * m_eclShowerToMC2GMothPDG
PDG code of Gparent of second MCParticle related to ECLShower.
std::vector< int > * m_mcPdg
MCParticle PDG code.
std::vector< double > * m_eclShowerSecondMoment
Shower Second Moment.
std::vector< int > * m_eclShowerToMC5
Index of fifth MCParticle related to ECLShower.
virtual void terminate() override
Termination action.
std::vector< double > * m_mcDecayVtxY
MCParticle decay vertex Y.
std::vector< int > * m_eclShowerToMC3MothPDG
PDG code of parent of first MCParticle related to ECLShower.
StoreArray< ECLSimHit > m_eclSimHits
Store array: ECLSimHit.
std::vector< int > * m_eclClusterToMC5
Index of fifth MCParticle related to ECLCluster.
int m_iEvent
Event number.
std::vector< int > * m_eclShowerToMC4GMothPDG
PDG code of Gparent of fourth MCParticle related to ECLShower.
std::vector< double > * m_eclPureClusterToMCWeight5
Energy contribution of 5th MCParticle related to ECLCluster, PureCsI option.
std::vector< int > * m_eclShowerToLM3
Index of 3rd maximum related to ECLShower.
std::vector< double > * m_eclPureClusterToMCWeight1
Energy contribution of first MCParticle related to ECLCluster, PureCsI option.
std::vector< int > * m_eclPureDigitFitQuality
ECLDigit fit quality, PureCsI option.
StoreArray< ECLDigit > m_eclDigits
Store array: ECLDigit.
std::vector< double > * m_eclClusterEnergyError
ECLCluster energy error.
std::vector< double > * m_eclClusterPhiError
ECLCluster error on azimuthal direction.
std::vector< int > * m_trkIdx
Track index.
std::vector< int > * m_eclCalDigitToCR
Index of CR related to that ECLCalDigit.
std::vector< int > * m_eclClusterToMC3
Index of third MCParticle related to ECLCluster.
std::vector< double > * m_eclClusterSimHitSum
Energy contribution of 1st MCParticle related to ECLCluster.
std::vector< int > * m_eclPureCalDigitFitQuality
CalDigit fit quality, PureCsI option.
std::vector< int > * m_eclPureCalDigitToMC1PDG
PDG code of first MCParticle related to CalDigit, PureCsI option.
std::vector< double > * m_eclPureCRLikelihoodNGamma
Connected Region Gamma Likelihood, PureCsI option.
std::vector< int > * m_eclPureCalDigitToMC3
Index of third MCParticle related to CalDigit, PureCsI option.
int m_eclPureLMMultip
Local Maxima multiplicity, PureCsI option.
std::vector< int > * m_mcMothPdg
MCParticle mother particle PDG code.
std::vector< int > * m_eclClusterToMC1
Index of first MCParticle related to ECLCluster.
std::vector< int > * m_eclShowerToLM4
Index of 4th maximum related to ECLShower.
std::vector< double > * m_eclClusterToMCWeight2
Energy contribution of second MCParticle related to ECLCluster.
std::vector< double > * m_eclLogLikePi
PID track pion likelihood.
std::vector< double > * m_eclClusterE1oE9
Reconstructed E1 over E9.
std::vector< double > * m_eclPureCalDigitTimeFit
CalDigit timing, PureCsI option.
std::vector< double > * m_eclShowerUncEnergy
Shower bare energy.
std::vector< double > * m_eclCalDigitToBkgWeight
Remaining energy contribution not associated to first five MCParticles related to ECLCalDigit.
std::vector< int > * m_eclHitToDigit
Index of ECLDigit related to ECLHit.
StoreArray< ECLDigit > m_eclPureDigits
Store array: ECLPureDigit.
std::vector< int > * m_eclClusterHasNeutralHadronHypothesis
Cluster has neutral hadron hypothesis.
std::vector< int > * m_eclShowerToMC2Moth
Mother index of first MCParticle related to ECLShower.
std::vector< double > * m_eclShowerT99
Shower T99.
std::vector< int > * m_eclShowerToLM1
Index of first maximum related to ECLShower.
std::vector< int > * m_eclLMCellId
Local Maximum Cell ID.
std::vector< double > * m_eclShowerToMCWeight3
Energy contribution of third MCParticle related to ECLShower.
std::vector< int > * m_eclHitToDigitAmp
Amplitude of ECLDigit related to ECLHit.
int m_eclClusterTrueMultip
Number of ECLClusters per event.
std::vector< int > * m_eclDigitTimeFit
ECLDigit timing.
std::vector< double > * m_eclPureClusterClosestTrackDist
Reconstructed Distance to Closest Track, PureCsI option.
std::vector< double > * m_eclClusterToMCWeight4
Energy contribution of fourth MCParticle related to ECLCluster.
std::vector< double > * m_eclShowerHighestEnergy
Shower Highest Energy Crystal Energy.
std::vector< double > * m_eclPureCRLikelihoodElectronNGamma
Connected Region Electron Likelihood, PureCsI option.
std::vector< int > * m_eclClusterToMC2
Index of second MCParticle related to ECLCluster.
std::vector< int > * m_eclShowerIdx
Shower Index.
std::vector< int > * m_eclPureCalDigitIdx
ECLCalDigit index, PureCsI option.
std::vector< int > * m_eclSimHitToMC
Index of MCParticle related to that ECLSimHit.
std::vector< double > * m_eclClusterToBkgWeight
Remaining energy contribution not associated to first five MCParticles related to ECLCluster.
std::vector< int > * m_eclDigitToCalDigit
Index of CalDigit related to that ECLDigit.
std::vector< int > * m_eclShowerToMC3Moth
Mother index of first MCParticle related to ECLShower.
std::vector< double > * m_eclPureCalDigitToMCWeight2
Energy contribution of second MCParticle related to CalDigit, PureCsI option.
std::vector< int > * m_eclDigitIdx
ECLDigit index.
int m_eclClusterGammaMultip
Number of ECLClusters per event.
std::vector< double > * m_eclPureClusterE1oE9
Reconstructed E1oE9, PureCsI option.
virtual void beginRun() override
beginRun
std::vector< double > * m_eclShowerThetaError
Shower Theta Error.
std::vector< double > * m_eclShowerSimHitSum
Full energy contribution related to ECLShower.
StoreArray< Track > m_tracks
Tracks storeArray.
virtual const char * eclPureDigitArrayName() const
Default name ECLPureDigits array.
StoreArray< ECLLocalMaximum > m_eclPureLocalMaximums
Store array: ECLPureLocalMaximum.
std::vector< int > * m_eclPureLMCellId
Local Maximum Cell ID, PureCsI option.
std::vector< int > * m_eclCalDigitToMC5PDG
PDG code of fifth MCParticle related to ECLCalDigit.
std::vector< int > * m_eclShowerIsTrack
Shower Track Match.
std::vector< int > * m_mcGMothPdg
MCParticle grandmother particle PDG code.
std::vector< double > * m_eclpidEnergy
PID track energy.
std::vector< int > * m_eclpidNClusters
PID track number of clusters.
std::vector< double > * m_eclShowerPhi
Shower Phi.
int m_mcMultip
Multiplicity of MCParticles.
std::vector< double > * m_eclPureCRLikelihoodMIPNGamma
Connected Region MIP Likelihood, PureCsI option.
std::vector< double > * m_eclPureClusterE9oE21
Ratio of 3x3 over 5x5 crystal matrices energies for Cluster, PureCsI option.
std::vector< int > * m_eclLMType
Local Maximum type.
std::vector< double > * m_eclShowerTrkDepth
Shower Track Depth.
std::vector< int > * m_eclLMId
Local Maximum ID.
std::vector< double > * m_trkP
Track momentum.
std::vector< double > * m_eclPureClusterEnergy
Cluster energy, PureCsI option.
std::vector< int > * m_eclHitToPureDigitAmp
Amplitude of ECLDigit related to ECLHit, PureCsI option.
std::vector< double > * m_eclClusterTimingError
ECLCluster time error.
std::vector< int > * m_eclShowerToMC4
Index of fourth MCParticle related to ECLShower.
std::vector< double > * m_mcProdVtxZ
MCParticle production vertex Z.
std::vector< double > * m_mcEnergy
MCParticle energyx.
std::vector< int > * m_eclpidtrkIdx
PID track index.
std::vector< int > * m_eclShowerCentralCellId
Cell ID for most energetic crystal.
std::vector< double > * m_eclShowerToMCWeight1
Energy contribution of first MCParticle related to ECLShower.
StoreArray< ECLCluster > m_eclClusters
Store array: ECLCluster.
std::vector< int > * m_eclCalDigitToMC3
Index of third MCParticle related to ECLCalDigit.
std::vector< int > * m_eclPureCalDigitToMC4PDG
PDG code of fourth MCParticle related to CalDigit, PureCsI option.
std::vector< int > * m_eclHitIdx
Index of ECLHits.
std::vector< int > * m_eclClusterToMC1PDG
PDG code of first MCParticle related to ECLCluster.
std::vector< int > * m_eclPureClusterDetectorRegion
Clusters detector region, PureCsI option.
std::vector< double > * m_mcDecayVtxX
MCParticle decay vertex X.
std::vector< double > * m_trkY
Track DOCA Y (?)
std::vector< int > * m_eclShowerToMC5Moth
Mother index of fifth MCParticle related to ECLShower.
std::vector< double > * m_eclPureCalDigitAmp
CalDigit amplitude, PureCsI option.
std::vector< int > * m_eclPureCalDigitToLM
Index of LM related to that CalDigit, PureCsI option.
std::vector< int > * m_eclCalDigitIdx
ECLCalDigit index.
std::vector< int > * m_eclSimHitIdx
Index of ECLSimHit.
std::vector< int > * m_eclClusterToMC2PDG
PDG code of second MCParticle related to ECLCluster.
StoreArray< ECLConnectedRegion > m_eclPureConnectedRegions
Store array: ECLPureConnectedRegion.
std::vector< int > * m_eclPureDigitCellId
Number of ECLDigit CellId, PureCsI option.
std::vector< int > * m_eclDigitFitQuality
ECLDigit fit quality.
int m_eclPureCalDigitMultip
Number of ECLCalDigits per event, PureCsI option.
std::vector< double > * m_eclPureClusterLat
Cluster shape parameter LAT, PureCsI option.
std::vector< int > * m_eclPureClusterToMC4PDG
PDG code of fourth MCParticle related to ECLCluster, PureCsI option.
std::vector< int > * m_eclShowerMCFFlightMatch
Int, 1 if primary particle flight direction is "well" reconstructed in ECL, 0 otherwise,...
std::vector< int > * m_eclCalDigitToMC1PDG
PDG code of first MCParticle related to ECLCalDigit.
std::vector< double > * m_eclCalDigitAmp
ECLCalDigit amplitude.
std::vector< double > * m_mcPx
MCParticle momentum X direction.
std::vector< int > * m_eclShowerToMC2MothPDG
PDG code of parent of first MCParticle related to ECLShower.
std::vector< int > * m_eclpidNCrystals
PID track number of crystals.
std::vector< int > * m_mcIdx
MCParticle index.
StoreArray< ECLShower > m_eclPureShowers
Store array: ECLPureShower.
std::vector< int > * m_eclPureClusterToMC1PDG
PDG code of first MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_eclShowerZernikeMVA
Shower ZernikeMVA.
std::vector< double > * m_eclPureClusterAbsZernike40
Reconstructed Zernike40, PureCsI option.
std::vector< double > * m_eclPureClusterSecondMoment
Reconstructed Cluster Second Moment, PureCsI option.
int m_eclPureDigitMultip
Number of ECLDigits per event, PureCsI option.
uint8_t m_nECLShowersRejectedBarrel
Number of photon showers that are rejected before storing to mdst (max.
virtual const char * eclDigitArrayName() const
Default name ECLDigits array.
std::vector< double > * m_eclClusterTiming
ECLCluster time.
std::vector< int > * m_eclCalDigitCellId
Number of ECLCalDigit CellId.
std::vector< double > * m_mcProdVtxX
MCParticle production vertex X.
std::vector< double > * m_eclShowerEnergy
Shower Energy.
StoreArray< ECLHit > m_eclHits
Store array: ECLHit.
std::vector< int > * m_eclPureCRIdx
Connected Region ID, PureCsI option.
std::vector< double > * m_eclCRLikelihoodMergedPi0
Connected Region Merged Pi0 Likelihood.
uint8_t m_nECLShowersRejectedFWD
Number of photon showers that are rejected before storing to mdst (max.
virtual const char * eclConnectedRegionArrayName() const
Default name ECLConnectedRegions array.
std::vector< int > * m_eclShowerToMC5MothPDG
PDG code of parent of fifth MCParticle related to ECLShower.
std::vector< double > * m_eclPureClusterToMCWeight2
Energy contribution of second MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_trkX
Track DOCA X (?)
std::vector< double > * m_eclPureClusterToMCWeight3
Energy contribution of third MCParticle related to ECLCluster, PureCsI option.
int m_eclClusterMultip
Number of ECLClusters per event.
std::vector< double > * m_eclShowerLateralEnergy
Shower Lateral Energy.
std::vector< double > * m_mcPz
MCParticle momentum Z direction.
std::vector< int > * m_eclPureClusterHasNeutralHadronHypothesis
Cluster has neutral hadron hypothesis, PureCsI option.
std::vector< double > * m_eclPureCalDigitSimHitSum
Full energy contribution related to CalDigit, PureCsI option.
std::vector< int > * m_eclCalDigitToMC5
Index of fifth MCParticle related to ECLCalDigit.
StoreArray< MCParticle > m_mcParticles
MCParticles StoreArray.
std::vector< double > * m_eclClusterHighestE
Highest energy deposit (per crystal) in ECLCluster.
std::vector< int > * m_eclPureDigitAmp
ECLDigit amplitude, PureCsI option.
StoreObjPtr< EventMetaData > m_eventmetadata
Store object pointer: EventMetaData.
virtual ~ECLDataAnalysisModule()
Destructor of the module.
std::vector< int > * m_eclCRIsTrack
Int for Connected Region - Track Match.
std::vector< int > * m_eclShowerConnectedRegionId
Matched Connetcted Region Idx.
virtual const char * eclCalDigitArrayName() const
Default name ECLCalDigits array.
std::vector< double > * m_eclPureClusterToMCWeight4
Energy contribution of fourth MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_eclPureClusterPhiError
Cluster error on azimuthal direction, PureCsI option.
bool m_doTracking
if true, info on tracking will be stored, job will fail if doTracking==1 and the tracking modules are...
std::vector< double > * m_eclShowerAbsZernike51
Shower Zernike51 Moment.
std::vector< double > * m_eclShowerR
Shower R.
std::vector< int > * m_eclPureClusterToMC1
Index of first MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_eclShowerToMCWeight5
Energy contribution of fifth MCParticle related to ECLShower.
std::vector< double > * m_eclHitTimeAve
ECLHit time.
StoreArray< ECLCluster > m_eclPureClusters
Store array: ECLPureCluster.
int m_eclLMMultip
Local Maxima multiplicity.
std::vector< int > * m_eclSimHitPdg
PDG code of MCParticle associated to that ECLDigit.
virtual const char * eclPureLocalMaximumArrayName() const
Default name ECLPureLocalMaxima array.
std::vector< double > * m_trkPhi
Track azimuthal direction.
std::vector< int > * m_eclCalDigitToMC3PDG
PDG code of third MCParticle related to ECLCalDigit.
std::vector< int > * m_eclDigitCellId
Number of ECLDigit CellId.
std::vector< double > * m_eclPureCalDigitToMCWeight1
Energy contribution of first MCParticle related to CalDigit, PureCsI option.
std::vector< double > * m_eclPureClusterR
Cluster distance from IP, PureCsI option.
std::vector< double > * m_eclPureClusterTheta
Cluster polar direction, PureCsI option.
std::vector< double > * m_trkTheta
Track polar direction.
uint16_t m_nECLCalDigitsOutOfTimeBarrel
Number of out of time, energetic ECLCalDigits, Barrel.
std::vector< double > * m_eclLogLikeMu
PID track muon likelihood.
std::vector< int > * m_eclCalDigitToMC4PDG
PDG code of fourth MCParticle related to ECLCalDigit.
std::vector< int > * m_eclPureClusterToMC4
Index of fourth MCParticle related to ECLCluster, PureCsI option.
std::vector< int > * m_eclPureClusterIdx
ECLCluster index, PureCsI option.
std::vector< double > * m_eclClusterEnergy
ECLCluster energy.
virtual const char * eclPureShowerArrayName() const
Default name ECLPureShower array.
std::vector< int > * m_eclShowerToMC1
Index of first MCParticle related to ECLShower.
std::vector< double > * m_eclSimHitPy
ECLSimHit PY.
std::vector< int > * m_eclCalDigitToLM
Index of LM related to that ECLCalDigit.
std::vector< double > * m_eclClusterClosestTrackDist
Flag for charged clusters.
std::vector< double > * m_eclSimHitY
ECLSimHit Y position.
std::vector< double > * m_eclPureCRLikelihoodChargedHadron
Connected Region Charged Hadron Likelihood, PureCsI option.
int m_eclSimHitMultip
Number of ECLSimHits per event.
TFile * m_rootFilePtr
members of ECLReconstructor Module
std::vector< double > * m_eclClusterLAT
Reconstructed LAT.
std::vector< double > * m_eclShowerHighestE1mE2
Energy difference for 2 highest energy deposits in shower.
std::vector< double > * m_eclClusterDeltaTime99
DeltaTime99.
std::vector< int > * m_eclHitCellId
ECLHit CellID.
StoreObjPtr< EventLevelClusteringInfo > m_eventLevelClusteringInfo
Store object pointer: EventLevelClusteringInfo.
std::vector< int > * m_mcSecondaryPhysProc
Flag for secondary physics process.
std::vector< int > * m_eclShowerToMC1Moth
Mother index of first MCParticle related to ECLShower.
std::vector< double > * m_eclShowerE1oE9
Shower E1/E9.
std::vector< int > * m_eclShowerToMC3
Index of third MCParticle related to ECLShower.
std::vector< int > * m_eclShowerToMC1GMothPDG
PDG code of Gparent of first MCParticle related to ECLShower.
std::vector< double > * m_mcProdVtxY
MCParticle production vertex Y.
std::vector< double > * m_eclClusterSecondMoment
Reconstructed Second Moment.
std::vector< double > * m_eclPureClusterEnergyError
Cluster energy error, PureCsI option.
std::vector< int > * m_eclShowerToMC2GMoth
GMother index of second MCParticle related to ECLShower.
std::vector< double > * m_eclClusterE9oE21
Ratio of 3x3 over 5x5 crystal matrices energies for ECLCluster.
std::vector< int > * m_eclPureLMId
Local Maximum ID, PureCsI option.
virtual const char * eclPureCalDigitArrayName() const
Default name ECLPureCalDigits array.
std::vector< int > * m_eclShowerToMC4PDG
PDG code of fourth MCParticle related to ECLShower.
std::vector< int > * m_eclCalDigitToMC1
Index of first MCParticle related to ECLCalDigit.
std::vector< double > * m_eclPureClusterPhi
Cluster azimuthal direction, PureCsI option.
std::vector< int > * m_eclClusterCrystalHealth
Crystal health flag.
std::vector< bool > * m_eclClusterIsTrack
Flag for charged clusters.
virtual const char * eclPureConnectedRegionArrayName() const
Default name ECLPureConnectedRegions array.
std::vector< int > * m_eclClusterToShower
Index of ECLShower related to ECLCluster.
std::vector< double > * m_eclCalDigitToMCWeight3
Energy contribution of third MCParticle related to ECLCalDigit.
StoreArray< ECLCalDigit > m_eclCalDigits
Store array: ECLCalDigit.
std::vector< double > * m_eclpidE9E21
PID track ration of 3x3 over 5x5 crystal matrices energies.
std::vector< int > * m_eclPureCRIsTrack
Int for Connected Region - Track Match, PureCsI option.
std::vector< double > * m_eclCRLikelihoodNGamma
Connected Region Gamma Likelihood.
std::vector< int > * m_eclPureDigitTimeFit
ECLDigit timing, PureCsI option.
std::vector< int > * m_eclPureCalDigitToMC5
Index of fifth MCParticle related to CalDigit, PureCsI option.
std::vector< int > * m_trkPdg
Track PDG code.
std::vector< double > * m_eclPureCalDigitToMCWeight3
Energy contribution of third MCParticle related to CalDigit, PureCsI option.
std::vector< double > * m_eclClusterDeltaL
Reconstructed Cluster DeltaL.
std::vector< int > * m_mcGGMothPdg
MCParticle greand-grandmother particle PDG code.
std::vector< int > * m_eclShowerToMC1MothPDG
PDG code of parent of first MCParticle related to ECLShower.
uint16_t m_nECLCalDigitsOutOfTimeBWD
Number of out of time, energetic ECLCalDigits, BWD.
StoreArray< ECLPidLikelihood > m_eclPidLikelihoods
ECLPidLikelihood storeArray.
std::vector< int > * m_eclPureClusterCrystalHealth
Crystal health flag, PureCsI option.
std::vector< double > * m_eclShowerPhiError
Shower Phi Error.
std::vector< double > * m_eclpidEop
PID track E/p.
std::vector< int > * m_eclShowerToMC1GMoth
GMother index of first MCParticle related to ECLShower.
std::vector< double > * m_eclShowerAbsZernike40
Shower Zernike40 Moment.
std::vector< double > * m_eclShowerNHits
Shower NHits.
int m_eclShowerMultip
Number of ECLShowers per event.
std::vector< double > * m_eclClusterToMCWeight3
Energy contribution of third MCParticle related to ECLCluster.
Class to store ECL digitized hits (output of ECLDigi) relation to ECLHit filled in ecl/modules/eclDig...
int getAmp() const
Get Fitting Amplitude.
int getQuality() const
Get Fitting Quality.
int getCellId() const
Get Cell ID.
int getTimeFit() const
Get Fitting Time.
Class to store simulated hits which equate to average of ECLSImHit on crystals input for digitization...
double getTimeAve() const
Get average time.
int getCellId() const
Get Cell ID.
double getEnergyDep() const
Get deposit energy.
Class to store local maxima (LM)
int getCellId() const
Get CellId.
int getLMId() const
Get LM identifier.
int getType() const
Get type.
Container for likelihoods with ECL PID (ECLChargedPIDModule)
Class to store ECL Showers.
double getAbsZernikeMoment(unsigned int n, unsigned int m) const
Get absolute value of Zernike Moment nm.
int getHypothesisId() const
Get Hypothesis Id.
double getPhi() const
Get Phi.
double getLateralEnergy() const
Get Lateral Energy in Shower.
double getE1oE9() const
Get energy ratio E1oE9.
double getEnergy() const
Get Energy.
double getShowerDepth() const
path on track extrapolation to POCA to average cluster direction
int getConnectedRegionId() const
Get Connected region Id.
double getR() const
Get R.
double getEnergyRaw() const
Get Energy Sum.
double getUncertaintyTheta() const
Get Error of theta.
double getE9oE21() const
Get energy ratio E9oE21.
double getNumberOfCrystalsForEnergy() const
Get number of crystals used for energy calculation.
double getUncertaintyEnergy() const
Get Error of Energy.
double getTrkDepth() const
path on track extrapolation to POCA to average cluster direction
double getMinTrkDistance() const
Get distance to closest Track.
double getNumberOfCrystals() const
Get NofCrystals.
double getEnergyHighestCrystal() const
Get Highest Energy in Shower.
double getZernikeMVA() const
Get Zernike MVA.
bool getIsTrack() const
Get if matched with a Track.
double getUncertaintyPhi() const
Get Error of phi.
int getCentralCellId() const
Get central cell Id.
double getSecondMoment() const
Get second moment.
double getTheta() const
Get Theta.
double getDeltaTime99() const
Get Time Resolution.
double getTime() const
Get Time.
ClassECLSimHit - Geant4 simulated hit for the ECL.
int getPDGCode() const
Get Particle PDG (can be one of secondaries)
int getCellId() const
Get Cell ID.
double getFlightTime() const
Get Flight time from IP.
double getEnergyDep() const
Get Deposit energy.
G4ThreeVector getPosition() const
Get Position.
G4ThreeVector getMomentum() const
Get Momentum.
A Class to store the Monte Carlo particle information.
float getEnergy() const
Return particle energy in GeV.
int getIndex() const
Get 1-based index of the particle in the corresponding MCParticle list.
ROOT::Math::XYZVector getDecayVertex() const
Return decay vertex.
int getArrayIndex() const
Get 0-based index of the particle in the corresponding MCParticle list.
ROOT::Math::XYZVector getProductionVertex() const
Return production vertex position.
int getPDG() const
Return PDG code of particle.
ROOT::Math::XYZVector getMomentum() const
Return momentum.
int getSecondaryPhysicsProcess() const
Returns the physics process type of a secondary particle.
void setDescription(const std::string &description)
Sets the description of the module.
int getArrayIndex() const
Returns this object's array index (in StoreArray), or -1 if not found.
TO * getRelatedTo(const std::string &name="", const std::string &namedRelation="") const
Get the object to which this object has a relation.
T * getRelated(const std::string &name="", const std::string &namedRelation="") const
Get the object to or from which this object has a relation.
RelationVector< TO > getRelationsTo(const std::string &name="", const std::string &namedRelation="") const
Get the relations that point from this object to another store array.
int getEntries() const
Get the number of objects in the array.
Values of the result of a track fit with a given particle hypothesis.
short getChargeSign() const
Return track charge (1 or -1).
Const::ParticleType getParticleType() const
Getter for ParticleType of the mass hypothesis of the track fit.
ROOT::Math::XYZVector getMomentum() const
Getter for vector of momentum at closest approach of track in r/phi projection.
ROOT::Math::XYZVector getPosition() const
Getter for vector of position at closest approach of track in r/phi projection.
Class that bundles various TrackFitResults.
bool isFailedFit() const
Get Boolean Fit Failed Status.
void addParam(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
MCParticle * getMother() const
Returns a pointer to the mother particle.
Abstract base class for different kinds of events.