Generate and assign the variables from the object.
20{
21
22 const auto& seed = path->front();
23 const auto* seedRecoTrack = seed.getSeed();
24
25 double arcLength_total = 0.;
26 std::vector<double> arcLengths;
27 arcLengths.reserve(path->size() - 1);
28 std::vector<double> hitDistances;
29 hitDistances.reserve(path->size() - 1);
30 std::vector<double> flipPos(8, 0);
31
32 unsigned int chargeFlip = 0;
33 int lastCharge = seedRecoTrack->getChargeSeed();
34
35 for (auto const& state : *path) {
36 if (state.isSeed()) {
37 continue;
38 }
39
40 arcLengths.push_back(state.getArcLength() - arcLength_total);
41 arcLength_total = state.getArcLength();
42
43 hitDistances.push_back(state.getHitDistance());
44
45
46
47 genfit::MeasuredStateOnPlane trackState = state.getTrackState();
48 int stateCharge = trackState.getCharge();
49 if (lastCharge != stateCharge) {
50 if (chargeFlip < flipPos.size()) {
51 flipPos[chargeFlip] = state.getWireHit()->getWire().getICLayer();
52 }
53
54 chargeFlip += 1;
55 lastCharge = stateCharge;
56 }
57 }
58
59
61
62
63 var<
named(
"totalHits")>() = path->size() - 1;
64 var<
named(
"chargeFlip")>() = chargeFlip;
65
66 bool reachedEnd = false;
67 if (path->size() > 1) {
68 if (path->back().getWireHit()->getWire().getICLayer() == 0) {
69 reachedEnd = true;
70 }
71 }
72 var<
named(
"reachedEnd")>() = reachedEnd;
73
74 var<
named(
"flipPos0")>() = flipPos[0];
75 var<
named(
"flipPos1")>() = flipPos[1];
76 var<
named(
"flipPos2")>() = flipPos[2];
77 var<
named(
"flipPos3")>() = flipPos[3];
78
79
80 ROOT::Math::XYZVector seedPos = seedRecoTrack->getPositionSeed();
81 ROOT::Math::XYZVector seedMom = seedRecoTrack->getMomentumSeed();
82 var<
named(
"seed_r")>() = seedPos.Rho();
83 var<
named(
"seed_z")>() = seedPos.Z();
84 var<
named(
"seed_x")>() = seedPos.X();
85 var<
named(
"seed_y")>() = seedPos.Y();
86 var<
named(
"seed_p")>() = seedMom.R();
87 var<
named(
"seed_theta")>() = seedMom.Theta() * 180. / M_PI;
88 var<
named(
"seed_pt")>() = seedMom.Rho();
89 var<
named(
"seed_pz")>() = seedMom.Z();
90 var<
named(
"seed_px")>() = seedMom.X();
91 var<
named(
"seed_py")>() = seedMom.Y();
92 var<
named(
"seed_charge")>() = seedRecoTrack->getChargeSeed();
93
94 var<
named(
"totalHitsSeedTrack")>() = seedRecoTrack->getNumberOfCDCHits();
95
96
98 const auto& wires = wireTopology.getWires();
99 const float maxForwardZ = wires.back().getForwardZ();
100 const float maxBackwardZ = wires.back().getBackwardZ();
101
102 int seedICLayer = -1;
103 const float seedPosZ = seedPos.z();
104 if (seedPosZ < maxForwardZ && seedPosZ > maxBackwardZ) {
105 seedICLayer = 56;
106 } else {
107
108 ROOT::Math::XYZVector seedMomZOne(seedMom * (1. / seedMom.Z()));
109
110
111 float minDist = 99999;
112 for (const auto& wire : wires) {
113 const float maxZ = seedPosZ > 0 ? wire.getForwardZ() : wire.getBackwardZ();
114
116 if (distance < minDist) {
117 minDist = distance;
118 seedICLayer = wire.getICLayer();
119 }
120 }
121 }
122 var<
named(
"seedICLayer")>() = seedICLayer;
123
124
125
126 ROOT::Math::XYZVector trackMom(0, 0, 0);
127 int trackCharge = 0;
128 float firstChi2 = 0;
129 float lastChi2 = 0;
130 float firstICLayer = 0;
131 float lastICLayer = 0;
132 if (path->size() > 1) {
133 genfit::MeasuredStateOnPlane trackState = path->back().getTrackState();
134
135 trackMom = trackState.getMom();
136 trackCharge = trackState.getCharge();
137
138 firstChi2 = path->at(1).getChi2();
139 lastChi2 = path->back().getChi2();
140
141 firstICLayer = path->at(1).getWireHit()->getWire().getICLayer();
142 lastICLayer = path->back().getWireHit()->getWire().getICLayer();
143 }
144 var<
named(
"track_theta")>() = trackMom.Theta() * 180. / M_PI;
145 var<
named(
"track_p")>() = trackMom.R();
146 var<
named(
"track_pt")>() = trackMom.Rho();
147 var<
named(
"track_pz")>() = trackMom.Z();
148 var<
named(
"track_px")>() = trackMom.X();
149 var<
named(
"track_py")>() = trackMom.Y();
150 var<
named(
"track_charge")>() = trackCharge;
151
152 var<
named(
"firstChi2")>() = firstChi2;
153 var<
named(
"lastChi2")>() = lastChi2;
154
155 var<
named(
"firstICLayer")>() = firstICLayer;
156 var<
named(
"lastICLayer")>() = lastICLayer;
157
158 if (path->size() > 3) {
159 int lastN = path->size() - 1;
160 var<
named(
"ICLayerLast0")>() = path->at(lastN).getWireHit()->getWire().getICLayer();
161 var<
named(
"ICLayerLast1")>() = path->at(lastN - 1).getWireHit()->getWire().getICLayer();
162 var<
named(
"ICLayerLast2")>() = path->at(lastN - 2).getWireHit()->getWire().getICLayer();
163 var<
named(
"IWireLast0")>() = path->at(lastN).getWireHit()->getWire().getIWire();
164 var<
named(
"IWireLast1")>() = path->at(lastN - 1).getWireHit()->getWire().getIWire();
165 var<
named(
"IWireLast2")>() = path->at(lastN - 2).getWireHit()->getWire().getIWire();
166 } else {
173 }
174
175 if (path->size() > 10) {
176 var<
named(
"hitDistance0")>() = hitDistances[0];
177 var<
named(
"hitDistance1")>() = hitDistances[1];
178 var<
named(
"hitDistance2")>() = hitDistances[2];
179 var<
named(
"hitDistance3")>() = hitDistances[3];
180 var<
named(
"hitDistance4")>() = hitDistances[4];
181 var<
named(
"hitDistance5")>() = hitDistances[5];
182 var<
named(
"hitDistance6")>() = hitDistances[6];
183 var<
named(
"hitDistance7")>() = hitDistances[7];
184 var<
named(
"hitDistance8")>() = hitDistances[8];
185 var<
named(
"hitDistance9")>() = hitDistances[9];
186 var<
named(
"arcLength0")>() = arcLengths[0];
187 var<
named(
"arcLength1")>() = arcLengths[1];
188 var<
named(
"arcLength2")>() = arcLengths[2];
189 var<
named(
"arcLength3")>() = arcLengths[3];
190 var<
named(
"arcLength4")>() = arcLengths[4];
191 var<
named(
"arcLength5")>() = arcLengths[5];
192 var<
named(
"arcLength6")>() = arcLengths[6];
193 var<
named(
"arcLength7")>() = arcLengths[7];
194 var<
named(
"arcLength8")>() = arcLengths[8];
195 var<
named(
"arcLength9")>() = arcLengths[9];
196 } else {
217 }
218
219 return true;
220}
StoreObjPtr< EventMetaData > m_eventMetaData
use this to get the eventNumber
static CDCWireTopology & getInstance()
Getter for the singleton instance of the wire topology.
static constexpr int named(const char *name)
Getter for the index from the name.
Float_t & var()
Reference getter for the value of the ith variable. Static version.
A three dimensional vector.