11 #include "tracking/dataobjects/FilterID.h"
12 #include <framework/logging/Logger.h>
20 const string FilterID::nameDistance3D =
"distance3D";
21 const string FilterID::nameDistanceXY =
"distanceXY";
22 const string FilterID::nameDistanceZ =
"distanceZ";
23 const string FilterID::nameSlopeRZ =
"slopeRZ";
24 const string FilterID::nameNormedDistance3D =
"normedDistance3D";
28 const string FilterID::nameAnglesHighOccupancy3D =
"HioCangles3D";
29 const string FilterID::nameAnglesHighOccupancyXY =
"HioCanglesXY";
30 const string FilterID::nameAnglesHighOccupancyRZ =
"HioCanglesRZ";
31 const string FilterID::nameDistanceHighOccupancy2IP =
"HioCdistance2IP";
32 const string FilterID::nameDeltaSlopeHighOccupancyRZ =
"HioCdeltaSlopeRZ";
33 const string FilterID::namePTHighOccupancy =
"HioCpT";
34 const string FilterID::nameHelixParameterHighOccupancyFit =
"HioChelixFit";
38 const string FilterID::nameAngles3D =
"angles3D";
39 const string FilterID::nameAnglesRZ =
"anglesRZ";
40 const string FilterID::nameAnglesXY =
"anglesXY";
41 const string FilterID::nameDeltaSlopeRZ =
"deltaSlopeRZ";
42 const string FilterID::namePT =
"pT";
43 const string FilterID::nameDistance2IP =
"distance2IP";
44 const string FilterID::nameHelixParameterFit =
"helixParameterFit";
45 const string FilterID::nameDeltaSOverZ =
"deltaSOverZ";
46 const string FilterID::nameDeltaSlopeZOverS =
"deltaSlopeZOverS";
50 const string FilterID::nameDeltapTHighOccupancy =
"HioCdeltaPt";
51 const string FilterID::nameDeltaDistanceHighOccupancy2IP =
"HioCdeltaDistance2IP";
55 const string FilterID::nameDeltapT =
"deltaPt";
56 const string FilterID::nameDeltaDistance2IP =
"deltaDistance2IP";
60 const string FilterID::nameNbFinderLost =
"NbFinderLost";
61 const string FilterID::nameCellularAutomaton =
"CellularAutomaton";
65 const string FilterID::nameZiggZaggXY =
"ZiggZaggXY";
66 const string FilterID::nameZiggZaggXYWithSigma =
"ZiggZaggXYWithSigma";
67 const string FilterID::nameZiggZaggRZ =
"ZiggZaggRZ";
68 const string FilterID::nameCirclefit =
"Circlefit";
69 const string FilterID::nameHelixfit =
"Helixfit";
70 const string FilterID::nameSimpleLineFit3D =
"SimpleLineFit3D";
74 const string FilterID::nameHopfield =
"Hopfield";
75 const string FilterID::nameGreedy =
"Greedy";
76 const string FilterID::nameTcDuel =
"TcDuel";
77 const string FilterID::nameTcFinderCurr =
"TcFinderCurr";
78 const string FilterID::nameCalcQIbyKalman =
"CalcQIbyKalman";
79 const string FilterID::nameOverlapping =
"Overlapping";
84 const string FilterID::nameSilentTcc =
"SilentTcc";
85 const string FilterID::nameSilentHitFinder =
"SilentHitFinder";
86 const string FilterID::nameSilentSegFinder =
"SilentSegFinder";
90 const string FilterID::nameAlwaysTrue2Hit =
"alwaysTrue2Hit";
91 const string FilterID::nameAlwaysFalse2Hit =
"alwaysFalse2Hit";
92 const string FilterID::nameAlwaysTrue3Hit =
"alwaysTrue3Hit";
93 const string FilterID::nameAlwaysFalse3Hit =
"alwaysFalse3Hit";
94 const string FilterID::nameAlwaysTrue4Hit =
"alwaysTrue4Hit";
95 const string FilterID::nameAlwaysFalse4Hit =
"alwaysFalse4Hit";
96 const string FilterID::nameRandom2Hit =
"random2Hit";
97 const string FilterID::nameRandom3Hit =
"random3Hit";
98 const string FilterID::nameRandom4Hit =
"random4Hit";
102 const string FilterID::nameOverHighestAllowedLayer =
"overHighestAllowedLayer";
103 const string FilterID::nameOutOfSectorRange =
"outOfSectorRange";
108 const boost::array<string, FilterID::numFilters> FilterID::nameVector = { {
114 nameNormedDistance3D,
118 nameAnglesHighOccupancy3D,
119 nameAnglesHighOccupancyXY,
120 nameAnglesHighOccupancyRZ,
121 nameDistanceHighOccupancy2IP,
122 nameDeltaSlopeHighOccupancyRZ,
124 nameHelixParameterHighOccupancyFit,
134 nameHelixParameterFit,
136 nameDeltaSlopeZOverS,
140 nameDeltapTHighOccupancy,
141 nameDeltaDistanceHighOccupancy2IP,
146 nameDeltaDistance2IP,
151 nameCellularAutomaton,
156 nameZiggZaggXYWithSigma,
192 nameOverHighestAllowedLayer,
198 const boost::array<FilterID::filterTypes, FilterID::numFilters> FilterID::enumVector = {
201 FilterID::distance3D,
202 FilterID::distanceXY,
205 FilterID::normedDistance3D,
209 FilterID::anglesHighOccupancy3D,
210 FilterID::anglesHighOccupancyXY,
211 FilterID::anglesHighOccupancyRZ,
212 FilterID::distanceHighOccupancy2IP,
213 FilterID::deltaSlopeHighOccupancyRZ,
214 FilterID::pTHighOccupancy,
215 FilterID::helixParameterHighOccupancyFit,
222 FilterID::deltaSlopeRZ,
224 FilterID::distance2IP,
225 FilterID::helixParameterFit,
226 FilterID::deltaSOverZ,
227 FilterID::deltaSlopeZOverS,
231 FilterID::deltapTHighOccupancy,
232 FilterID::deltaDistanceHighOccupancy2IP,
237 FilterID::deltaDistance2IP,
241 FilterID::nbFinderLost,
242 FilterID::cellularAutomaton,
246 FilterID::ziggZaggXY,
247 FilterID::ziggZaggXYWithSigma,
248 FilterID::ziggZaggRZ,
251 FilterID::simpleLineFit3D,
258 FilterID::tcFinderCurr,
259 FilterID::calcQIbyKalman,
260 FilterID::overlapping,
266 FilterID::silentHitFinder,
267 FilterID::silentSegFinder,
271 FilterID::alwaysTrue2Hit,
272 FilterID::alwaysFalse2Hit,
273 FilterID::alwaysTrue3Hit,
274 FilterID::alwaysFalse3Hit,
275 FilterID::alwaysTrue4Hit,
276 FilterID::alwaysFalse4Hit,
277 FilterID::random2Hit,
278 FilterID::random3Hit,
279 FilterID::random4Hit,
283 FilterID::overHighestAllowedLayer,
284 FilterID::outOfSectorRange
293 if (filterString == nameAngles3D)
295 else if (filterString == nameAnglesRZ)
297 else if (filterString == nameAnglesXY)
299 else if (filterString == nameDistance3D)
301 else if (filterString == nameDistanceXY)
303 else if (filterString == nameDistanceZ)
305 else if (filterString == nameHelixParameterFit)
306 {
return helixParameterFit;}
307 else if (filterString == nameDeltaSOverZ)
308 {
return deltaSOverZ;}
309 else if (filterString == nameDeltaSlopeZOverS)
310 {
return deltaSlopeZOverS;}
311 else if (filterString == nameSlopeRZ)
313 else if (filterString == nameDeltaSlopeRZ)
314 {
return deltaSlopeRZ;}
315 else if (filterString == namePT)
317 else if (filterString == nameDeltapT)
319 else if (filterString == nameNormedDistance3D)
320 {
return normedDistance3D;}
321 else if (filterString == nameDistance2IP)
322 {
return distance2IP;}
323 else if (filterString == nameDeltaDistance2IP)
324 {
return deltaDistance2IP;}
325 else if (filterString == nameAnglesHighOccupancy3D)
326 {
return anglesHighOccupancy3D;}
327 else if (filterString == nameAnglesHighOccupancyXY)
328 {
return anglesHighOccupancyXY;}
329 else if (filterString == nameAnglesHighOccupancyRZ)
330 {
return anglesHighOccupancyRZ;}
331 else if (filterString == nameDistanceHighOccupancy2IP)
332 {
return distanceHighOccupancy2IP;}
333 else if (filterString == nameDeltaSlopeHighOccupancyRZ)
334 {
return deltaSlopeHighOccupancyRZ;}
335 else if (filterString == namePTHighOccupancy)
336 {
return pTHighOccupancy;}
337 else if (filterString == nameHelixParameterHighOccupancyFit)
338 {
return helixParameterHighOccupancyFit;}
339 else if (filterString == nameDeltapTHighOccupancy)
340 {
return deltapTHighOccupancy;}
341 else if (filterString == nameDeltaDistanceHighOccupancy2IP)
342 {
return deltaDistanceHighOccupancy2IP;}
343 else if (filterString == nameNbFinderLost)
344 {
return nbFinderLost;}
345 else if (filterString == nameCellularAutomaton)
346 {
return cellularAutomaton;}
348 else if (filterString == nameHopfield)
350 else if (filterString == nameGreedy)
353 else if (filterString == nameTcDuel)
355 else if (filterString == nameTcFinderCurr)
356 {
return tcFinderCurr;}
358 else if (filterString == nameZiggZaggXY)
360 else if (filterString == nameZiggZaggXYWithSigma)
361 {
return ziggZaggXYWithSigma;}
362 else if (filterString == nameZiggZaggRZ)
365 else if (filterString == nameCalcQIbyKalman)
366 {
return calcQIbyKalman;}
367 else if (filterString == nameOverlapping)
368 {
return overlapping;}
369 else if (filterString == nameCirclefit)
371 else if (filterString == nameHelixfit)
373 else if (filterString == nameSimpleLineFit3D)
374 {
return simpleLineFit3D;}
376 else if (filterString == nameSilentTcc)
378 else if (filterString == nameSilentHitFinder)
379 {
return silentHitFinder;}
380 else if (filterString == nameSilentSegFinder)
381 {
return silentSegFinder;}
383 else if (filterString == nameAlwaysTrue2Hit)
384 {
return alwaysTrue2Hit;}
385 else if (filterString == nameAlwaysFalse2Hit)
386 {
return alwaysFalse2Hit;}
387 else if (filterString == nameAlwaysTrue3Hit)
388 {
return alwaysTrue3Hit;}
389 else if (filterString == nameAlwaysFalse3Hit)
390 {
return alwaysFalse3Hit;}
391 else if (filterString == nameAlwaysTrue4Hit)
392 {
return alwaysTrue4Hit;}
393 else if (filterString == nameAlwaysFalse4Hit)
394 {
return alwaysFalse4Hit;}
395 else if (filterString == nameRandom2Hit)
397 else if (filterString == nameRandom3Hit)
399 else if (filterString == nameRandom4Hit)
402 else if (filterString == nameOverHighestAllowedLayer)
403 {
return overHighestAllowedLayer;}
404 else if (filterString == nameOutOfSectorRange)
405 {
return outOfSectorRange;}
408 B2WARNING(
" FilterID::getFilterType. Input string is out of range, please check that...");
417 if (filterInt >= distance3D && filterInt < numFilters) {
418 return enumVector[filterInt];
420 B2WARNING(
" FilterID::getFilterType. Input int is out of range, please check that...");
426 std::string FilterID::getFilterString(
int filterType)
428 if (filterType >= distance3D && filterType < numFilters) {
429 return nameVector[filterType];
431 B2WARNING(
" FilterID::getFilterString. Input int is out of range, please check that...");
440 auto pos = std::find(enumVector.begin(), enumVector.end(), type);
441 if (pos == enumVector.end()) {
442 B2WARNING(
"FilterID::getTypeName(): given iD " << type <<
443 " is not a valid FilterID, return UnknownType!");
444 return std::string(
"UnknownType");
446 return FilterID::nameVector[type];