9 #include "tracking/dataobjects/FilterID.h"
10 #include <framework/logging/Logger.h>
18 const string FilterID::nameDistance3D =
"distance3D";
19 const string FilterID::nameDistanceXY =
"distanceXY";
20 const string FilterID::nameDistanceZ =
"distanceZ";
21 const string FilterID::nameSlopeRZ =
"slopeRZ";
22 const string FilterID::nameNormedDistance3D =
"normedDistance3D";
26 const string FilterID::nameAnglesHighOccupancy3D =
"HioCangles3D";
27 const string FilterID::nameAnglesHighOccupancyXY =
"HioCanglesXY";
28 const string FilterID::nameAnglesHighOccupancyRZ =
"HioCanglesRZ";
29 const string FilterID::nameDistanceHighOccupancy2IP =
"HioCdistance2IP";
30 const string FilterID::nameDeltaSlopeHighOccupancyRZ =
"HioCdeltaSlopeRZ";
31 const string FilterID::namePTHighOccupancy =
"HioCpT";
32 const string FilterID::nameHelixParameterHighOccupancyFit =
"HioChelixFit";
36 const string FilterID::nameAngles3D =
"angles3D";
37 const string FilterID::nameAnglesRZ =
"anglesRZ";
38 const string FilterID::nameAnglesXY =
"anglesXY";
39 const string FilterID::nameDeltaSlopeRZ =
"deltaSlopeRZ";
40 const string FilterID::namePT =
"pT";
41 const string FilterID::nameDistance2IP =
"distance2IP";
42 const string FilterID::nameHelixParameterFit =
"helixParameterFit";
43 const string FilterID::nameDeltaSOverZ =
"deltaSOverZ";
44 const string FilterID::nameDeltaSlopeZOverS =
"deltaSlopeZOverS";
48 const string FilterID::nameDeltapTHighOccupancy =
"HioCdeltaPt";
49 const string FilterID::nameDeltaDistanceHighOccupancy2IP =
"HioCdeltaDistance2IP";
53 const string FilterID::nameDeltapT =
"deltaPt";
54 const string FilterID::nameDeltaDistance2IP =
"deltaDistance2IP";
58 const string FilterID::nameNbFinderLost =
"NbFinderLost";
59 const string FilterID::nameCellularAutomaton =
"CellularAutomaton";
63 const string FilterID::nameZiggZaggXY =
"ZiggZaggXY";
64 const string FilterID::nameZiggZaggXYWithSigma =
"ZiggZaggXYWithSigma";
65 const string FilterID::nameZiggZaggRZ =
"ZiggZaggRZ";
66 const string FilterID::nameCirclefit =
"Circlefit";
67 const string FilterID::nameHelixfit =
"Helixfit";
68 const string FilterID::nameSimpleLineFit3D =
"SimpleLineFit3D";
72 const string FilterID::nameHopfield =
"Hopfield";
73 const string FilterID::nameGreedy =
"Greedy";
74 const string FilterID::nameTcDuel =
"TcDuel";
75 const string FilterID::nameTcFinderCurr =
"TcFinderCurr";
76 const string FilterID::nameCalcQIbyKalman =
"CalcQIbyKalman";
77 const string FilterID::nameOverlapping =
"Overlapping";
82 const string FilterID::nameSilentTcc =
"SilentTcc";
83 const string FilterID::nameSilentHitFinder =
"SilentHitFinder";
84 const string FilterID::nameSilentSegFinder =
"SilentSegFinder";
88 const string FilterID::nameAlwaysTrue2Hit =
"alwaysTrue2Hit";
89 const string FilterID::nameAlwaysFalse2Hit =
"alwaysFalse2Hit";
90 const string FilterID::nameAlwaysTrue3Hit =
"alwaysTrue3Hit";
91 const string FilterID::nameAlwaysFalse3Hit =
"alwaysFalse3Hit";
92 const string FilterID::nameAlwaysTrue4Hit =
"alwaysTrue4Hit";
93 const string FilterID::nameAlwaysFalse4Hit =
"alwaysFalse4Hit";
94 const string FilterID::nameRandom2Hit =
"random2Hit";
95 const string FilterID::nameRandom3Hit =
"random3Hit";
96 const string FilterID::nameRandom4Hit =
"random4Hit";
100 const string FilterID::nameOverHighestAllowedLayer =
"overHighestAllowedLayer";
101 const string FilterID::nameOutOfSectorRange =
"outOfSectorRange";
106 const boost::array<string, FilterID::numFilters> FilterID::nameVector = { {
112 nameNormedDistance3D,
116 nameAnglesHighOccupancy3D,
117 nameAnglesHighOccupancyXY,
118 nameAnglesHighOccupancyRZ,
119 nameDistanceHighOccupancy2IP,
120 nameDeltaSlopeHighOccupancyRZ,
122 nameHelixParameterHighOccupancyFit,
132 nameHelixParameterFit,
134 nameDeltaSlopeZOverS,
138 nameDeltapTHighOccupancy,
139 nameDeltaDistanceHighOccupancy2IP,
144 nameDeltaDistance2IP,
149 nameCellularAutomaton,
154 nameZiggZaggXYWithSigma,
190 nameOverHighestAllowedLayer,
196 const boost::array<FilterID::filterTypes, FilterID::numFilters> FilterID::enumVector = {
199 FilterID::distance3D,
200 FilterID::distanceXY,
203 FilterID::normedDistance3D,
207 FilterID::anglesHighOccupancy3D,
208 FilterID::anglesHighOccupancyXY,
209 FilterID::anglesHighOccupancyRZ,
210 FilterID::distanceHighOccupancy2IP,
211 FilterID::deltaSlopeHighOccupancyRZ,
212 FilterID::pTHighOccupancy,
213 FilterID::helixParameterHighOccupancyFit,
220 FilterID::deltaSlopeRZ,
222 FilterID::distance2IP,
223 FilterID::helixParameterFit,
224 FilterID::deltaSOverZ,
225 FilterID::deltaSlopeZOverS,
229 FilterID::deltapTHighOccupancy,
230 FilterID::deltaDistanceHighOccupancy2IP,
235 FilterID::deltaDistance2IP,
239 FilterID::nbFinderLost,
240 FilterID::cellularAutomaton,
244 FilterID::ziggZaggXY,
245 FilterID::ziggZaggXYWithSigma,
246 FilterID::ziggZaggRZ,
249 FilterID::simpleLineFit3D,
256 FilterID::tcFinderCurr,
257 FilterID::calcQIbyKalman,
258 FilterID::overlapping,
264 FilterID::silentHitFinder,
265 FilterID::silentSegFinder,
269 FilterID::alwaysTrue2Hit,
270 FilterID::alwaysFalse2Hit,
271 FilterID::alwaysTrue3Hit,
272 FilterID::alwaysFalse3Hit,
273 FilterID::alwaysTrue4Hit,
274 FilterID::alwaysFalse4Hit,
275 FilterID::random2Hit,
276 FilterID::random3Hit,
277 FilterID::random4Hit,
281 FilterID::overHighestAllowedLayer,
282 FilterID::outOfSectorRange
291 if (filterString == nameAngles3D)
293 else if (filterString == nameAnglesRZ)
295 else if (filterString == nameAnglesXY)
297 else if (filterString == nameDistance3D)
299 else if (filterString == nameDistanceXY)
301 else if (filterString == nameDistanceZ)
303 else if (filterString == nameHelixParameterFit)
304 {
return helixParameterFit;}
305 else if (filterString == nameDeltaSOverZ)
306 {
return deltaSOverZ;}
307 else if (filterString == nameDeltaSlopeZOverS)
308 {
return deltaSlopeZOverS;}
309 else if (filterString == nameSlopeRZ)
311 else if (filterString == nameDeltaSlopeRZ)
312 {
return deltaSlopeRZ;}
313 else if (filterString == namePT)
315 else if (filterString == nameDeltapT)
317 else if (filterString == nameNormedDistance3D)
318 {
return normedDistance3D;}
319 else if (filterString == nameDistance2IP)
320 {
return distance2IP;}
321 else if (filterString == nameDeltaDistance2IP)
322 {
return deltaDistance2IP;}
323 else if (filterString == nameAnglesHighOccupancy3D)
324 {
return anglesHighOccupancy3D;}
325 else if (filterString == nameAnglesHighOccupancyXY)
326 {
return anglesHighOccupancyXY;}
327 else if (filterString == nameAnglesHighOccupancyRZ)
328 {
return anglesHighOccupancyRZ;}
329 else if (filterString == nameDistanceHighOccupancy2IP)
330 {
return distanceHighOccupancy2IP;}
331 else if (filterString == nameDeltaSlopeHighOccupancyRZ)
332 {
return deltaSlopeHighOccupancyRZ;}
333 else if (filterString == namePTHighOccupancy)
334 {
return pTHighOccupancy;}
335 else if (filterString == nameHelixParameterHighOccupancyFit)
336 {
return helixParameterHighOccupancyFit;}
337 else if (filterString == nameDeltapTHighOccupancy)
338 {
return deltapTHighOccupancy;}
339 else if (filterString == nameDeltaDistanceHighOccupancy2IP)
340 {
return deltaDistanceHighOccupancy2IP;}
341 else if (filterString == nameNbFinderLost)
342 {
return nbFinderLost;}
343 else if (filterString == nameCellularAutomaton)
344 {
return cellularAutomaton;}
346 else if (filterString == nameHopfield)
348 else if (filterString == nameGreedy)
351 else if (filterString == nameTcDuel)
353 else if (filterString == nameTcFinderCurr)
354 {
return tcFinderCurr;}
356 else if (filterString == nameZiggZaggXY)
358 else if (filterString == nameZiggZaggXYWithSigma)
359 {
return ziggZaggXYWithSigma;}
360 else if (filterString == nameZiggZaggRZ)
363 else if (filterString == nameCalcQIbyKalman)
364 {
return calcQIbyKalman;}
365 else if (filterString == nameOverlapping)
366 {
return overlapping;}
367 else if (filterString == nameCirclefit)
369 else if (filterString == nameHelixfit)
371 else if (filterString == nameSimpleLineFit3D)
372 {
return simpleLineFit3D;}
374 else if (filterString == nameSilentTcc)
376 else if (filterString == nameSilentHitFinder)
377 {
return silentHitFinder;}
378 else if (filterString == nameSilentSegFinder)
379 {
return silentSegFinder;}
381 else if (filterString == nameAlwaysTrue2Hit)
382 {
return alwaysTrue2Hit;}
383 else if (filterString == nameAlwaysFalse2Hit)
384 {
return alwaysFalse2Hit;}
385 else if (filterString == nameAlwaysTrue3Hit)
386 {
return alwaysTrue3Hit;}
387 else if (filterString == nameAlwaysFalse3Hit)
388 {
return alwaysFalse3Hit;}
389 else if (filterString == nameAlwaysTrue4Hit)
390 {
return alwaysTrue4Hit;}
391 else if (filterString == nameAlwaysFalse4Hit)
392 {
return alwaysFalse4Hit;}
393 else if (filterString == nameRandom2Hit)
395 else if (filterString == nameRandom3Hit)
397 else if (filterString == nameRandom4Hit)
400 else if (filterString == nameOverHighestAllowedLayer)
401 {
return overHighestAllowedLayer;}
402 else if (filterString == nameOutOfSectorRange)
403 {
return outOfSectorRange;}
406 B2WARNING(
" FilterID::getFilterType. Input string is out of range, please check that...");
415 if (filterInt >= distance3D && filterInt < numFilters) {
416 return enumVector[filterInt];
418 B2WARNING(
" FilterID::getFilterType. Input int is out of range, please check that...");
424 std::string FilterID::getFilterString(
int filterType)
426 if (filterType >= distance3D && filterType < numFilters) {
427 return nameVector[filterType];
429 B2WARNING(
" FilterID::getFilterString. Input int is out of range, please check that...");
438 auto pos = std::find(enumVector.begin(), enumVector.end(), type);
439 if (pos == enumVector.end()) {
440 B2WARNING(
"FilterID::getTypeName(): given iD " << type <<
441 " is not a valid FilterID, return UnknownType!");
442 return std::string(
"UnknownType");
444 return FilterID::nameVector[type];
filterTypes
filterTyoes contains enums assigning unique values for each filter type allowing fast filter type rec...
Abstract base class for different kinds of events.