8 #include <tracking/ckf/cdc/filters/paths/CDCPathBasicVarSet.h>
10 #include <tracking/ckf/cdc/entities/CDCCKFState.h>
12 #include <tracking/dataobjects/RecoTrack.h>
14 #include <tracking/trackFindingCDC/topology/CDCWire.h>
15 #include <tracking/trackFindingCDC/topology/CDCWireTopology.h>
23 const auto& seed = path->front();
24 const auto* seedRecoTrack = seed.getSeed();
26 double arcLength_total = 0.;
27 std::vector<double> arcLengths;
28 arcLengths.reserve(path->size() - 1);
29 std::vector<double> hitDistances;
30 hitDistances.reserve(path->size() - 1);
31 std::vector<double> flipPos(8, 0);
33 unsigned int chargeFlip = 0;
34 int lastCharge = seedRecoTrack->getChargeSeed();
36 for (
auto const& state : *path) {
41 arcLengths.push_back(state.getArcLength() - arcLength_total);
42 arcLength_total = state.getArcLength();
44 hitDistances.push_back(state.getHitDistance());
49 int stateCharge = trackState.getCharge();
50 if (lastCharge != stateCharge) {
51 if (chargeFlip < flipPos.size()) {
52 flipPos[chargeFlip] = state.getWireHit()->getWire().getICLayer();
56 lastCharge = stateCharge;
61 var<named(
"eventNumber")>() = m_eventMetaData->getEvent();
64 var<named(
"totalHits")>() = path->size() - 1;
65 var<named(
"chargeFlip")>() = chargeFlip;
67 bool reachedEnd =
false;
68 if (path->size() > 1) {
69 if (path->back().getWireHit()->getWire().getICLayer() == 0) {
73 var<named(
"reachedEnd")>() = reachedEnd;
75 var<named(
"flipPos0")>() = flipPos[0];
76 var<named(
"flipPos1")>() = flipPos[1];
77 var<named(
"flipPos2")>() = flipPos[2];
78 var<named(
"flipPos3")>() = flipPos[3];
81 TVector3 seedPos = seedRecoTrack->getPositionSeed();
82 TVector3 seedMom = seedRecoTrack->getMomentumSeed();
83 var<named(
"seed_r")>() = seedPos.Perp();
84 var<named(
"seed_z")>() = seedPos.Z();
85 var<named(
"seed_x")>() = seedPos.X();
86 var<named(
"seed_y")>() = seedPos.Y();
87 var<named(
"seed_p")>() = seedMom.Mag();
88 var<named(
"seed_theta")>() = seedMom.Theta() * 180. / M_PI;
89 var<named(
"seed_pt")>() = seedMom.Perp();
90 var<named(
"seed_pz")>() = seedMom.Z();
91 var<named(
"seed_px")>() = seedMom.X();
92 var<named(
"seed_py")>() = seedMom.Y();
93 var<named(
"seed_charge")>() = seedRecoTrack->getChargeSeed();
95 var<named(
"totalHitsSeedTrack")>() = seedRecoTrack->getNumberOfCDCHits();
98 const auto& wireTopology = TrackFindingCDC::CDCWireTopology::getInstance();
99 const auto& wires = wireTopology.getWires();
100 const float maxForwardZ = wires.back().getForwardZ();
101 const float maxBackwardZ = wires.back().getBackwardZ();
103 int seedICLayer = -1;
104 const float seedPosZ = seedPos.z();
105 if (seedPosZ < maxForwardZ && seedPosZ > maxBackwardZ) {
109 TVector3 seedMomZOne(seedMom * (1. / seedMom.Z()));
112 float minDist = 99999;
113 for (
const auto& wire : wires) {
114 const float maxZ = seedPosZ > 0 ? wire.getForwardZ() : wire.getBackwardZ();
117 if (distance < minDist) {
119 seedICLayer = wire.getICLayer();
123 var<named(
"seedICLayer")>() = seedICLayer;
127 TVector3 trackMom(0, 0, 0);
131 float firstICLayer = 0;
132 float lastICLayer = 0;
133 if (path->size() > 1) {
136 trackMom = trackState.getMom();
137 trackCharge = trackState.getCharge();
139 firstChi2 = path->at(1).getChi2();
140 lastChi2 = path->back().getChi2();
142 firstICLayer = path->at(1).getWireHit()->getWire().getICLayer();
143 lastICLayer = path->back().getWireHit()->getWire().getICLayer();
145 var<named(
"track_theta")>() = trackMom.Theta() * 180. / M_PI;
146 var<named(
"track_p")>() = trackMom.Mag();
147 var<named(
"track_pt")>() = trackMom.Perp();
148 var<named(
"track_pz")>() = trackMom.Z();
149 var<named(
"track_px")>() = trackMom.X();
150 var<named(
"track_py")>() = trackMom.Y();
151 var<named(
"track_charge")>() = trackCharge;
153 var<named(
"firstChi2")>() = firstChi2;
154 var<named(
"lastChi2")>() = lastChi2;
156 var<named(
"firstICLayer")>() = firstICLayer;
157 var<named(
"lastICLayer")>() = lastICLayer;
159 if (path->size() > 3) {
160 int lastN = path->size() - 1;
161 var<named(
"ICLayerLast0")>() = path->at(lastN).getWireHit()->getWire().getICLayer();
162 var<named(
"ICLayerLast1")>() = path->at(lastN - 1).getWireHit()->getWire().getICLayer();
163 var<named(
"ICLayerLast2")>() = path->at(lastN - 2).getWireHit()->getWire().getICLayer();
164 var<named(
"IWireLast0")>() = path->at(lastN).getWireHit()->getWire().getIWire();
165 var<named(
"IWireLast1")>() = path->at(lastN - 1).getWireHit()->getWire().getIWire();
166 var<named(
"IWireLast2")>() = path->at(lastN - 2).getWireHit()->getWire().getIWire();
168 var<named(
"ICLayerLast0")>() = -1;
169 var<named(
"ICLayerLast1")>() = -1;
170 var<named(
"ICLayerLast2")>() = -1;
171 var<named(
"IWireLast0")>() = -1;
172 var<named(
"IWireLast1")>() = -1;
173 var<named(
"IWireLast2")>() = -1;
176 if (path->size() > 10) {
177 var<named(
"hitDistance0")>() = hitDistances[0];
178 var<named(
"hitDistance1")>() = hitDistances[1];
179 var<named(
"hitDistance2")>() = hitDistances[2];
180 var<named(
"hitDistance3")>() = hitDistances[3];
181 var<named(
"hitDistance4")>() = hitDistances[4];
182 var<named(
"hitDistance5")>() = hitDistances[5];
183 var<named(
"hitDistance6")>() = hitDistances[6];
184 var<named(
"hitDistance7")>() = hitDistances[7];
185 var<named(
"hitDistance8")>() = hitDistances[8];
186 var<named(
"hitDistance9")>() = hitDistances[9];
187 var<named(
"arcLength0")>() = arcLengths[0];
188 var<named(
"arcLength1")>() = arcLengths[1];
189 var<named(
"arcLength2")>() = arcLengths[2];
190 var<named(
"arcLength3")>() = arcLengths[3];
191 var<named(
"arcLength4")>() = arcLengths[4];
192 var<named(
"arcLength5")>() = arcLengths[5];
193 var<named(
"arcLength6")>() = arcLengths[6];
194 var<named(
"arcLength7")>() = arcLengths[7];
195 var<named(
"arcLength8")>() = arcLengths[8];
196 var<named(
"arcLength9")>() = arcLengths[9];
198 var<named(
"hitDistance0")>() = -1;
199 var<named(
"hitDistance1")>() = -1;
200 var<named(
"hitDistance2")>() = -1;
201 var<named(
"hitDistance3")>() = -1;
202 var<named(
"hitDistance4")>() = -1;
203 var<named(
"hitDistance5")>() = -1;
204 var<named(
"hitDistance6")>() = -1;
205 var<named(
"hitDistance7")>() = -1;
206 var<named(
"hitDistance8")>() = -1;
207 var<named(
"hitDistance9")>() = -1;
208 var<named(
"arcLength0")>() = -1;
209 var<named(
"arcLength1")>() = -1;
210 var<named(
"arcLength2")>() = -1;
211 var<named(
"arcLength3")>() = -1;
212 var<named(
"arcLength4")>() = -1;
213 var<named(
"arcLength5")>() = -1;
214 var<named(
"arcLength6")>() = -1;
215 var<named(
"arcLength7")>() = -1;
216 var<named(
"arcLength8")>() = -1;
217 var<named(
"arcLength9")>() = -1;
AObject Object
Type of the object to be analysed.
A three dimensional vector.
#StateOnPlane with additional covariance matrix.
Abstract base class for different kinds of events.