51 #include "TParameter.h"
65 std::cout<<
" -I- (PndFsmCmpDet::PndFsmCmpDet) - Using parameter file '"<<
_parFileName<<
"'"<<endl;
71 std::cout<<
" -I- (PndFsmCmpDet::PndFsmCmpDet) - Creating arbitrary detector set"<<endl;
128 double DrcDiscThtc=0;
129 double DrcBarrelThtc=0;
136 double DrcDiscThtcErr=0;
137 double DrcBarrelThtcErr=0;
138 double RichThtcErr=0;
152 for (FsmAbsDetList::iterator iter=
fDetList.begin();iter!=
fDetList.end(); iter++) {
158 if (
fabs(val = resp->
dE()) > 1e-8) dE+=1/(val*
val);
159 if (
fabs(val = resp->
dt()) > 1e-8) dt += val*
val;
160 if (
fabs(val = resp->
dm()) > 1e-8) dm +=
val;
161 if (
fabs (val = resp->
m2()) > 1e-11) m2+=
val;
178 double rawLHmu = resp->
LHMuon();
179 double rawLHpi = resp->
LHPion();
180 double rawLHK = resp->
LHKaon();
183 double sumRaw = rawLHe+rawLHmu+rawLHpi+rawLHK+rawLHp;
212 if ( pid==11 || pid==13 || pid==211 || pid==321 || pid==2212) {
213 double p=t->
p4().Vect().Mag();
214 double theta=t->
p4().Vect().Theta()*180/M_PI;
217 detected &= ( p >
_mom0[
pid]->GetVal() );
218 detected &= ( theta >=
_tht0->GetVal() );
219 detected &= ( theta <=
_tht1->GetVal() );
242 if (
fabs(val = resp->
dE()) > 1e-8) dE-=1/(val*
val);
243 if (
fabs(val = resp->
dp()) > 1e-8) dp-=1/(val*
val);
245 if (
fabs(val = resp->
dphi()) > 1e-8) dphi-=1/(val*
val);
246 if (
fabs(val = resp->
dt()) > 1e-8) dt -= val*
val;
247 if (
fabs(val = resp->
dm()) > 1e-8) dm -=
val;
248 if (
fabs (val = resp->
m2()) > 1e-11) m2-=
val;
264 if (
fabs (val = resp->
dV().X()) > 1e-11) dVx-=1/(val*
val);
265 if (
fabs (val = resp->
dV().Y()) > 1e-11) dVy-=1/(val*
val);
266 if (
fabs (val = resp->
dV().Z()) > 1e-11) dVz-=1/(val*
val);
269 double rawLHmu = resp->
LHMuon();
270 double rawLHpi = resp->
LHPion();
271 double rawLHK = resp->
LHKaon();
274 double sumRaw = rawLHe+rawLHmu+rawLHpi+rawLHK+rawLHp;
291 double sumLH = LH_e + LH_mu + LH_pi + LH_K + LH_p;
315 result->
setdE( dE>0. ? 1/
sqrt(dE) : 0.0 );
316 result->
setdp( dp>0. ? 1/
sqrt(dp) : 0.0 );
322 result->
setm2(m2, m2Err);
331 if (dVx > 0.) dVx=1./
sqrt(dVx);
else dVx = 0.0;
332 if (dVy > 0.) dVy=1./
sqrt(dVy);
else dVy = 0.0;
333 if (dVz > 0.) dVz=1./
sqrt(dVz);
else dVz = 0.0;
335 result->
setdV( dVx , dVy , dVz );
370 if (name ==
"parFileName")
385 if (name ==
"d0ResMulti")
388 if (name ==
"z0ResMulti")
391 if (name ==
"thtResMulti")
394 if (name ==
"phiResMulti")
397 if (name ==
"momResMulti")
400 if (name ==
"thtMin")
403 if (name ==
"thtMax")
406 if (name ==
"pidLhMulti")
419 cout <<
" -W- (PndFsmCmpDet::readParameters) - file "<<
_parFileName
420 <<
" doesn't exist. Using constant vertex reso"<<endl;
423 _d0[11]=(TSpline3*)f.Get(
"d0E-");
424 _z0[11]=(TSpline3*)f.Get(
"z0E-");
425 _tht[11]=(TSpline3*)f.Get(
"thtE-");
426 _phi[11]=(TSpline3*)f.Get(
"phiE-");
427 _mom[11]=(TSpline3*)f.Get(
"momE-");
429 _d0Scale[11]=(TF1*)f.Get(
"d0ScaleE-");
430 _z0Scale[11]=(TF1*)f.Get(
"z0ScaleE-");
435 _d0[13]=(TSpline3*)f.Get(
"d0Mu+");
436 _z0[13]=(TSpline3*)f.Get(
"z0Mu+");
437 _tht[13]=(TSpline3*)f.Get(
"thtMu+");
438 _phi[13]=(TSpline3*)f.Get(
"phiMu+");
439 if (!
_mom0[13])
_mom[13]=(TSpline3*)f.Get(
"momMu+");
441 _d0Scale[13]=(TF1*)f.Get(
"d0ScaleMu+");
442 _z0Scale[13]=(TF1*)f.Get(
"z0ScaleMu+");
443 _thtScale[13]=(TF1*)f.Get(
"thtScaleMu+");
444 _phiScale[13]=(TF1*)f.Get(
"phiScaleMu+");
445 _momScale[13]=(TF1*)f.Get(
"momScaleMu+");
447 _d0[211]=(TSpline3*)f.Get(
"d0Pi-");
448 _z0[211]=(TSpline3*)f.Get(
"z0Pi-");
449 _tht[211]=(TSpline3*)f.Get(
"thtPi-");
450 _phi[211]=(TSpline3*)f.Get(
"phiPi-");
451 _mom[211]=(TSpline3*)f.Get(
"momPi-");
453 _d0Scale[211]=(TF1*)f.Get(
"d0ScalePi-");
454 _z0Scale[211]=(TF1*)f.Get(
"z0ScalePi-");
455 _thtScale[211]=(TF1*)f.Get(
"thtScalePi-");
456 _phiScale[211]=(TF1*)f.Get(
"phiScalePi-");
457 _momScale[211]=(TF1*)f.Get(
"momScalePi-");
459 _d0[321]=(TSpline3*)f.Get(
"d0K-");
460 _z0[321]=(TSpline3*)f.Get(
"z0K-");
461 _tht[321]=(TSpline3*)f.Get(
"thtK-");
462 _phi[321]=(TSpline3*)f.Get(
"phiK-");
463 _mom[321]=(TSpline3*)f.Get(
"momK-");
465 _d0Scale[321]=(TF1*)f.Get(
"d0ScaleK-");
466 _z0Scale[321]=(TF1*)f.Get(
"z0ScaleK-");
467 _thtScale[321]=(TF1*)f.Get(
"thtScaleK-");
468 _phiScale[321]=(TF1*)f.Get(
"phiScaleK-");
469 _momScale[321]=(TF1*)f.Get(
"momScaleK-");
471 _d0[2212]=(TSpline3*)f.Get(
"d0P+");
472 _z0[2212]=(TSpline3*)f.Get(
"z0P+");
473 _tht[2212]=(TSpline3*)f.Get(
"thtP+");
474 _phi[2212]=(TSpline3*)f.Get(
"phiP+");
475 _mom[2212]=(TSpline3*)f.Get(
"momP+");
477 _d0Scale[2212]=(TF1*)f.Get(
"d0ScaleP+");
478 _z0Scale[2212]=(TF1*)f.Get(
"z0ScaleP+");
479 _thtScale[2212]=(TF1*)f.Get(
"thtScaleP+");
480 _phiScale[2212]=(TF1*)f.Get(
"phiScaleP+");
481 _momScale[2212]=(TF1*)f.Get(
"momScaleP+");
489 std::map<int, TSpline3*>::iterator
i;
490 std::map<int, TParameter<double>*>::iterator j;
491 std::map<int, TF1*>::iterator k;
509 cout <<
" -W- (PndFsmCmpDet::readParameters) - file "<<
_parFileName
510 <<
" is defective. Using constant vertex reso"<<endl;
536 double xmin=s->GetXmin();
537 double xmax=s->GetXmax();
539 return s->Eval(xmin)+(x-
xmin)*s->Derivative(xmin);
541 return s->Eval(xmax)+(x-
xmax)*s->Derivative(xmax);
void setDrcBarrelThtc(double val, double err=0)
FsmAbsDetList fSubtractDetList
std::map< int, TSpline3 * > _d0
void setLHElectron(double val)
std::map< int, TF1 * > _d0Scale
void setLHProton(double val)
std::list< std::string > ArgList
friend F32vec4 sqrt(const F32vec4 &a)
void setTpcdEdx(double val, double err=0)
std::map< int, TParameter< double > * > _mom0
Double_t val[nBoxes][nFEBox]
void setLHMuon(double val)
std::map< int, TF1 * > _phiScale
std::map< int, TF1 * > _z0Scale
std::map< int, TSpline3 * > _phi
bool SubtractDetector(std::string name, std::string params="")
TParameter< double > * _tht1
void parseParameterList(ArgList &par)
void setm2(double val, double err=0)
bool AddDetector(std::string name, std::string params="")
std::map< int, TSpline3 * > _tht
std::map< int, TF1 * > _thtScale
for(int j=0;j< ncounts;j++)
TString m2(TString pts, TString exts="e px py pz")
std::map< int, TF1 * > _momScale
virtual PndFsmResponse * respond(PndFsmTrack *t)
basic_ostream< char, char_traits< char > > ostream
void setDetector(PndFsmAbsDet *detector)
TParameter< double > * _tht0
void setDrcDiscThtc(double val, double err=0)
std::map< int, TSpline3 * > _z0
PndFsmAbsDet * create(std::string &name, ArgList &par)
void setLHKaon(double val)
std::map< int, TSpline3 * > _mom
friend F32vec4 fabs(const F32vec4 &a)
PndFsmDetFactory fDetFact
void setRichThtc(double val, double err=0)
void setDetected(bool isdet)
void setdtheta(double val)
bool setParameter(std::string &name, std::string &value)
void setSttdEdx(double val, double err=0)
double DrcBarrelThtcErr()
void setMvddEdx(double val, double err=0)
double eval(TSpline3 *spline, double theta)
void setLHPion(double val)