102 TParticlePDG* part =
_fdbPDG->GetParticle(t->
pdt());
103 double mass = (part) ? part->Mass() : t->
p4().M();
104 double theta = t->
p4().Theta();
105 double p=t->
p4().Vect().Mag();
106 double stht=
sin(theta);
108 double En=t->
p4().E();
110 double dt=
_dt * 1e-12 * 2.998*(1e+8) *
sqrt(2.0);
112 if ( p==0 || p_t==0 || En==0 ) {result->
setDetected(
false);
return result;}
128 double time = 2.0*asin(
_rBarrel/2.0/r)/omega;
129 double measp =
_rand->Gaus(p,sigp);
131 double measpt=measp*stht;
133 double meas_t =
_rand->Gaus(0.0,dt);
134 double meastime = time + meas_t ;
138 if (measpt==0) {result->
setDetected(
false);
return result;}
145 measE = meastime*
_Bfield /3.3356 *0.5/asin(arg);
147 double measmas2 = measE* measE - measp* measp ;
149 if (measmas2<0) {result->
setDetected(
false);
return result;}
151 double measmas =
sqrt( measmas2);
156 double m_e =
_fdbPDG->GetParticle(11)->Mass();
157 double m_mu =
_fdbPDG->GetParticle(13)->Mass();
158 double m_pi =
_fdbPDG->GetParticle(211)->Mass();
159 double m_K =
_fdbPDG->GetParticle(321)->Mass();
160 double m_p =
_fdbPDG->GetParticle(2212)->Mass();
168 double dm_p = measmas - mass;
171 double dE=measE*dt/meastime;
172 double dm2=2*
sqrt(measE*measE*dE*dE+measp*measp*sigp*sigp);
182 result ->
setm2(measmas2,dm2);
197 return (1.0/(
sqrt(2.0*M_PI)*s))*
198 exp(-(x-x0)*(x-x0)/(2.0*s*s));
210 int lundId = abs(t->
pdt());
213 double theta = t->
p4().Theta();
215 double p_t = t->
p4().Vect().Pt();
216 double charge=t->
charge();
219 if (
fabs(charge)<0.001)
return false;
222 double rho = 3.3356 * p_t /
_Bfield;
226 if (!(lundId==11 || lundId==13 || lundId==211 || lundId==321 || lundId==2212))
return false;
229 double z=2*rho*asin(
_rBarrel/(2*rho))/tan(theta);
231 if (polar<_thtMin || polar>
_thtMax)
return false;
241 o <<
"Parameters for detector <"<<
detName()<<
">"<<endl;
242 o <<
" _thtMin = "<<
_thtMin<<endl;
243 o <<
" _thtMax = "<<
_thtMax<<endl;
245 o <<
" _pmin = "<<
_pmin<<endl;
246 o <<
" _Bfield = "<<
_Bfield<<endl;
248 o <<
" _dSlab = "<<
_dSlab<<endl;
249 o <<
" _dp = "<<
_dp<<endl;
250 o <<
" _dt = "<<
_dt<<endl;
279 if (name ==
"thtMin")
282 if (name ==
"thtMax")
285 if (name ==
"radiationLength")
291 if (name ==
"Bfield")
294 if (name ==
"rBarrel")
306 if (name ==
"efficiency")
void setLHElectron(double val)
bool detected(PndFsmTrack *t) const
friend F32vec4 exp(const F32vec4 &a)
void setLHProton(double val)
std::list< std::string > ArgList
virtual PndFsmResponse * respond(PndFsmTrack *t)
friend F32vec4 sqrt(const F32vec4 &a)
void setLHMuon(double val)
friend F32vec4 sin(const F32vec4 &a)
bool hitMapResponse(unsigned int)
void parseParameterList(ArgList &par)
void setm2(double val, double err=0)
double gauss_t(double x, double x0, double s)
bool setParameter(std::string &name, double value)
static const std::string & name(unsigned int t)
basic_ostream< char, char_traits< char > > ostream
void setDetector(PndFsmAbsDet *detector)
const std::string & detName()
void setLHKaon(double val)
friend F32vec4 fabs(const F32vec4 &a)
void print(std::ostream &o)
friend F32vec4 atan2(const F32vec4 &y, const F32vec4 &x)
void setDetected(bool isdet)
void setLHPion(double val)