10 #include <tracking/ckf/cdc/filters/paths/CDCPathBasicVarSet.h>
12 #include <tracking/ckf/cdc/entities/CDCCKFState.h>
14 #include <tracking/dataobjects/RecoTrack.h>
16 #include <tracking/trackFindingCDC/topology/CDCWire.h>
17 #include <tracking/trackFindingCDC/topology/CDCWireTopology.h>
25 const auto& seed = path->front();
26 const auto* seedRecoTrack = seed.getSeed();
28 double arcLength_total = 0.;
29 std::vector<double> arcLengths;
30 arcLengths.reserve(path->size() - 1);
31 std::vector<double> hitDistances;
32 hitDistances.reserve(path->size() - 1);
33 std::vector<double> flipPos(8, 0);
35 unsigned int chargeFlip = 0;
36 int lastCharge = seedRecoTrack->getChargeSeed();
38 for (
auto const& state : *path) {
43 arcLengths.push_back(state.getArcLength() - arcLength_total);
44 arcLength_total = state.getArcLength();
46 hitDistances.push_back(state.getHitDistance());
51 int stateCharge = trackState.getCharge();
52 if (lastCharge != stateCharge) {
53 if (chargeFlip < flipPos.size()) {
54 flipPos[chargeFlip] = state.getWireHit()->getWire().getICLayer();
58 lastCharge = stateCharge;
63 var<named(
"eventNumber")>() = m_eventMetaData->getEvent();
66 var<named(
"totalHits")>() = path->size() - 1;
67 var<named(
"chargeFlip")>() = chargeFlip;
69 bool reachedEnd =
false;
70 if (path->size() > 1) {
71 if (path->back().getWireHit()->getWire().getICLayer() == 0) {
75 var<named(
"reachedEnd")>() = reachedEnd;
77 var<named(
"flipPos0")>() = flipPos[0];
78 var<named(
"flipPos1")>() = flipPos[1];
79 var<named(
"flipPos2")>() = flipPos[2];
80 var<named(
"flipPos3")>() = flipPos[3];
83 TVector3 seedPos = seedRecoTrack->getPositionSeed();
84 TVector3 seedMom = seedRecoTrack->getMomentumSeed();
85 var<named(
"seed_r")>() = seedPos.Perp();
86 var<named(
"seed_z")>() = seedPos.Z();
87 var<named(
"seed_x")>() = seedPos.X();
88 var<named(
"seed_y")>() = seedPos.Y();
89 var<named(
"seed_p")>() = seedMom.Mag();
90 var<named(
"seed_theta")>() = seedMom.Theta() * 180. / M_PI;
91 var<named(
"seed_pt")>() = seedMom.Perp();
92 var<named(
"seed_pz")>() = seedMom.Z();
93 var<named(
"seed_px")>() = seedMom.X();
94 var<named(
"seed_py")>() = seedMom.Y();
95 var<named(
"seed_charge")>() = seedRecoTrack->getChargeSeed();
97 var<named(
"totalHitsSeedTrack")>() = seedRecoTrack->getNumberOfCDCHits();
100 const auto& wireTopology = TrackFindingCDC::CDCWireTopology::getInstance();
101 const auto& wires = wireTopology.getWires();
102 const float maxForwardZ = wires.back().getForwardZ();
103 const float maxBackwardZ = wires.back().getBackwardZ();
105 int seedICLayer = -1;
106 const float seedPosZ = seedPos.z();
107 if (seedPosZ < maxForwardZ && seedPosZ > maxBackwardZ) {
111 TVector3 seedMomZOne(seedMom * (1. / seedMom.Z()));
114 float minDist = 99999;
115 for (
const auto& wire : wires) {
116 const float maxZ = seedPosZ > 0 ? wire.getForwardZ() : wire.getBackwardZ();
119 if (distance < minDist) {
121 seedICLayer = wire.getICLayer();
125 var<named(
"seedICLayer")>() = seedICLayer;
129 TVector3 trackMom(0, 0, 0);
133 float firstICLayer = 0;
134 float lastICLayer = 0;
135 if (path->size() > 1) {
138 trackMom = trackState.getMom();
139 trackCharge = trackState.getCharge();
141 firstChi2 = path->at(1).getChi2();
142 lastChi2 = path->back().getChi2();
144 firstICLayer = path->at(1).getWireHit()->getWire().getICLayer();
145 lastICLayer = path->back().getWireHit()->getWire().getICLayer();
147 var<named(
"track_theta")>() = trackMom.Theta() * 180. / M_PI;
148 var<named(
"track_p")>() = trackMom.Mag();
149 var<named(
"track_pt")>() = trackMom.Perp();
150 var<named(
"track_pz")>() = trackMom.Z();
151 var<named(
"track_px")>() = trackMom.X();
152 var<named(
"track_py")>() = trackMom.Y();
153 var<named(
"track_charge")>() = trackCharge;
155 var<named(
"firstChi2")>() = firstChi2;
156 var<named(
"lastChi2")>() = lastChi2;
158 var<named(
"firstICLayer")>() = firstICLayer;
159 var<named(
"lastICLayer")>() = lastICLayer;
161 if (path->size() > 3) {
162 int lastN = path->size() - 1;
163 var<named(
"ICLayerLast0")>() = path->at(lastN).getWireHit()->getWire().getICLayer();
164 var<named(
"ICLayerLast1")>() = path->at(lastN - 1).getWireHit()->getWire().getICLayer();
165 var<named(
"ICLayerLast2")>() = path->at(lastN - 2).getWireHit()->getWire().getICLayer();
166 var<named(
"IWireLast0")>() = path->at(lastN).getWireHit()->getWire().getIWire();
167 var<named(
"IWireLast1")>() = path->at(lastN - 1).getWireHit()->getWire().getIWire();
168 var<named(
"IWireLast2")>() = path->at(lastN - 2).getWireHit()->getWire().getIWire();
170 var<named(
"ICLayerLast0")>() = -1;
171 var<named(
"ICLayerLast1")>() = -1;
172 var<named(
"ICLayerLast2")>() = -1;
173 var<named(
"IWireLast0")>() = -1;
174 var<named(
"IWireLast1")>() = -1;
175 var<named(
"IWireLast2")>() = -1;
178 if (path->size() > 10) {
179 var<named(
"hitDistance0")>() = hitDistances[0];
180 var<named(
"hitDistance1")>() = hitDistances[1];
181 var<named(
"hitDistance2")>() = hitDistances[2];
182 var<named(
"hitDistance3")>() = hitDistances[3];
183 var<named(
"hitDistance4")>() = hitDistances[4];
184 var<named(
"hitDistance5")>() = hitDistances[5];
185 var<named(
"hitDistance6")>() = hitDistances[6];
186 var<named(
"hitDistance7")>() = hitDistances[7];
187 var<named(
"hitDistance8")>() = hitDistances[8];
188 var<named(
"hitDistance9")>() = hitDistances[9];
189 var<named(
"arcLength0")>() = arcLengths[0];
190 var<named(
"arcLength1")>() = arcLengths[1];
191 var<named(
"arcLength2")>() = arcLengths[2];
192 var<named(
"arcLength3")>() = arcLengths[3];
193 var<named(
"arcLength4")>() = arcLengths[4];
194 var<named(
"arcLength5")>() = arcLengths[5];
195 var<named(
"arcLength6")>() = arcLengths[6];
196 var<named(
"arcLength7")>() = arcLengths[7];
197 var<named(
"arcLength8")>() = arcLengths[8];
198 var<named(
"arcLength9")>() = arcLengths[9];
200 var<named(
"hitDistance0")>() = -1;
201 var<named(
"hitDistance1")>() = -1;
202 var<named(
"hitDistance2")>() = -1;
203 var<named(
"hitDistance3")>() = -1;
204 var<named(
"hitDistance4")>() = -1;
205 var<named(
"hitDistance5")>() = -1;
206 var<named(
"hitDistance6")>() = -1;
207 var<named(
"hitDistance7")>() = -1;
208 var<named(
"hitDistance8")>() = -1;
209 var<named(
"hitDistance9")>() = -1;
210 var<named(
"arcLength0")>() = -1;
211 var<named(
"arcLength1")>() = -1;
212 var<named(
"arcLength2")>() = -1;
213 var<named(
"arcLength3")>() = -1;
214 var<named(
"arcLength4")>() = -1;
215 var<named(
"arcLength5")>() = -1;
216 var<named(
"arcLength6")>() = -1;
217 var<named(
"arcLength7")>() = -1;
218 var<named(
"arcLength8")>() = -1;
219 var<named(
"arcLength9")>() = -1;