109 TParticlePDG* part =
_fdbPDG->GetParticle(t->
pdt());
110 double mass = (part) ? part->Mass() : t->
p4().M();
111 double p=t->
p4().Vect().Mag();
117 double m_e =
_fdbPDG->GetParticle(11)->Mass();
118 double m_mu =
_fdbPDG->GetParticle(13)->Mass();
119 double m_pi =
_fdbPDG->GetParticle(211)->Mass();
120 double m_K =
_fdbPDG->GetParticle(321)->Mass();
121 double m_p =
_fdbPDG->GetParticle(2212)->Mass();
132 double measdEdx =
_rand->Gaus(dEdx,sig);
150 return (1.0/(
sqrt(2.0*M_PI)*s))*
151 exp(-(x-x0)*(x-x0)/(2.0*s*s));
167 beta=p/
sqrt(M*M+p*p);
170 gamma=1./
sqrt(1-beta*beta);
172 const double I=10e-6*
Z;
173 const double me=0.511;
176 Wmax=(2*me*beta*beta*gamma*gamma) / (1 + 2*gamma*me/M + (me/M)*(me/M));
181 double kappa=0.307075;
193 delta=2*
log(10.)*X+C+a*(X1-
X)*(X1-X)*(X1-
X);
195 delta=2*
log(10.)*X+
C;
197 dEdX= ( kappa * (Z/A) * z*z /(beta*beta)) * (
log(2*me*beta*beta*gamma*gamma*Wmax / (I*I)) - 2*beta*beta - delta);
210 double theta = t->
p4().Theta();
212 double p_t = t->
p4().Vect().Pt();
213 double charge=t->
charge();
216 if (
fabs(charge)<0.001)
return false;
219 double rho = 3.3356 * p_t /
_Bfield;
220 if (
_rmin>(2*rho))
return false;
223 double z=2*rho*asin(
_rmin/(2*rho))/tan(theta);
225 if (polar<_thtMin || polar>
_thtMax)
return false;
242 TLorentzVector p4=t->
p4();
243 double theta=p4.Theta();
244 double mom=p4.Vect().Mag();
245 double beta=p4.Beta();
249 double cont3 =
_sigTht/tan(theta);
251 return (
sqrt(cont1*cont1 + cont2*cont2 * cont3*cont3) * mom );
269 o <<
"Parameters for detector <"<<
detName()<<
">"<<endl;
270 o <<
" _n = "<<
_n<<endl;
271 o <<
" _sigXY = "<<
_sigXY<<endl;
272 o <<
" _Bfield = "<<
_Bfield<<endl;
273 o <<
" _Lpath = "<<
_Lpath<<endl;
274 o <<
" _X0 = "<<
_X0<<endl;
275 o <<
" _sigTht = "<<
_sigTht<<endl;
276 o <<
" _thtMin = "<<
_thtMin<<endl;
277 o <<
" _thtMax = "<<
_thtMax<<endl;
279 o <<
" _pmin = "<<
_pmin<<endl;
280 o <<
" _rmin = "<<
_rmin<<endl;
281 o <<
" _dEdxRes = "<<
_dEdxRes <<
" (rel)"<< endl;
320 if (name ==
"Bfield")
329 if (name ==
"sigTht")
332 if (name ==
"thtMin")
335 if (name ==
"thtMax")
338 if (name ==
"radiationLength")
347 if (name ==
"dEdxRes")
350 if (name ==
"efficiency")
double dphi(PndFsmTrack *t) const
double gauss(double x, double x0, double s)
void setLHElectron(double val)
friend F32vec4 exp(const F32vec4 &a)
void setLHProton(double val)
std::list< std::string > ArgList
friend F32vec4 sqrt(const F32vec4 &a)
void setLHMuon(double val)
double dp(PndFsmTrack *t) const
friend F32vec4 sin(const F32vec4 &a)
bool hitMapResponse(unsigned int)
friend F32vec4 log(const F32vec4 &a)
bool setParameter(std::string &name, double value)
void parseParameterList(ArgList &par)
double dtheta(PndFsmTrack *t) const
static const std::string & name(unsigned int t)
basic_ostream< char, char_traits< char > > ostream
void setDetector(PndFsmAbsDet *detector)
double compdEdx(double p, double M)
const std::string & detName()
bool detected(PndFsmTrack *t) const
void setLHKaon(double val)
friend F32vec4 fabs(const F32vec4 &a)
friend F32vec4 atan2(const F32vec4 &y, const F32vec4 &x)
void setDetected(bool isdet)
void setdtheta(double val)
void setSttdEdx(double val, double err=0)
virtual PndFsmResponse * respond(PndFsmTrack *t)
void setLHPion(double val)
void print(std::ostream &o)