12 #include <klm/muid/MuidElementNumbers.h>
15 #include <framework/gearbox/Const.h>
30 if (outcome == MuidElementNumbers::c_NotReached)
33 if ((outcome == MuidElementNumbers::c_StopInBarrel)
37 if ((outcome == MuidElementNumbers::c_StopInForwardEndcap)
41 if ((outcome == MuidElementNumbers::c_ExitBarrel)
45 if ((outcome == MuidElementNumbers::c_ExitForwardEndcap)
49 if ((outcome == MuidElementNumbers::c_StopInBackwardEndcap)
53 if ((outcome == MuidElementNumbers::c_ExitBackwardEndcap)
57 if ((outcome >= MuidElementNumbers::c_CrossBarrelStopInForwardMin)
58 && (outcome <= MuidElementNumbers::c_CrossBarrelStopInForwardMax)
62 if ((outcome >= MuidElementNumbers::c_CrossBarrelStopInBackwardMin)
63 && (outcome <= MuidElementNumbers::c_CrossBarrelStopInBackwardMax)
67 if ((outcome >= MuidElementNumbers::c_CrossBarrelExitForwardMin)
68 && (outcome <= MuidElementNumbers::c_CrossBarrelExitForwardMax)
72 if ((outcome >= MuidElementNumbers::c_CrossBarrelExitBackwardMin)
73 && (outcome <= MuidElementNumbers::c_CrossBarrelExitBackwardMax)
82 unsigned int outcome = MuidElementNumbers::c_NotReached;
83 if ((lastBarrelLayer >= 0) || (lastEndcapLayer >= 0)) {
85 if (lastEndcapLayer < 0) {
87 outcome = MuidElementNumbers::c_ExitBarrel;
89 outcome = MuidElementNumbers::c_StopInBarrel;
94 if (lastBarrelLayer < 0) {
96 outcome = MuidElementNumbers::c_ExitForwardEndcap;
98 outcome = MuidElementNumbers::c_ExitBackwardEndcap;
101 outcome = MuidElementNumbers::c_CrossBarrelExitForwardMin + lastBarrelLayer;
103 outcome = MuidElementNumbers::c_CrossBarrelExitBackwardMin + lastBarrelLayer;
106 if (lastBarrelLayer < 0) {
108 outcome = MuidElementNumbers::c_StopInForwardEndcap;
110 outcome = MuidElementNumbers::c_StopInBackwardEndcap;
113 outcome = MuidElementNumbers::c_CrossBarrelStopInForwardMin + lastBarrelLayer;
115 outcome = MuidElementNumbers::c_CrossBarrelStopInBackwardMin + lastBarrelLayer;
127 return MuidElementNumbers::c_Electron;
129 return MuidElementNumbers::c_Positron;
131 return MuidElementNumbers::c_MuonMinus;
133 return MuidElementNumbers::c_MuonPlus;
136 return MuidElementNumbers::c_Deuteron;
138 return MuidElementNumbers::c_AntiDeuteron;
140 return MuidElementNumbers::c_Proton;
142 return MuidElementNumbers::c_AntiProton;
144 return MuidElementNumbers::c_PionPlus;
146 return MuidElementNumbers::c_PionMinus;
148 return MuidElementNumbers::c_KaonPlus;
150 return MuidElementNumbers::c_KaonMinus;
152 return MuidElementNumbers::c_NotValid;
157 std::vector<int> pdgVector;
160 pdgVector.push_back(-charge * particle.getPDGCode());
162 pdgVector.push_back(charge * particle.getPDGCode());
171 pdgVector.insert(pdgVector.end(), temp.begin(), temp.end());
172 std::sort(pdgVector.begin(), pdgVector.end());
186 int id = degreesOfFreedom;