FairRoot/PandaRoot
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
PndFsmEmcFwCap Class Reference

#include <PndFsmEmcFwCap.h>

Inheritance diagram for PndFsmEmcFwCap:
PndFsmAbsDet

Public Member Functions

 PndFsmEmcFwCap ()
 
 PndFsmEmcFwCap (ArgList &par)
 
virtual ~PndFsmEmcFwCap ()
 
virtual PndFsmResponserespond (PndFsmTrack *t)
 
const std::string & detName ()
 
void setName (std::string &name)
 
Bool_t doesPid () const
 
void setStorePid (Bool_t doespid=kTRUE)
 

Protected Member Functions

virtual bool setParameter (std::string &name, std::string &value)
 
void parseParameterList (ArgList &par)
 

Protected Attributes

std::string _detName
 
double _efficiency
 
TRandom3 * _rand
 
TDatabasePDG * _fdbPDG
 
Bool_t _doesPid
 

Private Member Functions

bool detected (PndFsmTrack *t) const
 
double dE (PndFsmTrack *t) const
 
double dphi (PndFsmTrack *t) const
 
double dtheta (PndFsmTrack *t) const
 
void initParameters ()
 
void print (std::ostream &o)
 
bool setParameter (std::string &name, double value)
 

Private Attributes

double _aPar
 
double _bPar
 
double _cPar
 
double _xtalDim
 
double _Emin
 
double _dist
 
double _resFactor
 
double _thtMin
 
double _thtMax
 
double _radiationLength
 

Detailed Description

Definition at line 41 of file PndFsmEmcFwCap.h.

Constructor & Destructor Documentation

PndFsmEmcFwCap::PndFsmEmcFwCap ( )

Default ctor.

Definition at line 57 of file PndFsmEmcFwCap.cxx.

References _thtMax, _thtMin, and initParameters().

58 {
60 
61  _thtMin=_thtMin*M_PI/180.0;
62  _thtMax=_thtMax*M_PI/180.0;
63  //print(std::cout);
64 }
PndFsmEmcFwCap::PndFsmEmcFwCap ( ArgList par)

Definition at line 66 of file PndFsmEmcFwCap.cxx.

References _thtMax, _thtMin, initParameters(), and PndFsmAbsDet::parseParameterList().

67 {
69  //set default parameter values and parses a parameter list
70  //i.e. std::list<std::string> of the form
71  //"a=1" "b=2" "c=3"
73 
74  _thtMin=_thtMin*M_PI/180.0;
75  _thtMax=_thtMax*M_PI/180.0;
76  //print(std::cout);
77 }
Double_t par[3]
void parseParameterList(ArgList &par)
PndFsmEmcFwCap::~PndFsmEmcFwCap ( )
virtual

Destructor

Definition at line 83 of file PndFsmEmcFwCap.cxx.

84 {
85 }

Member Function Documentation

double PndFsmEmcFwCap::dE ( PndFsmTrack t) const
private

Definition at line 135 of file PndFsmEmcFwCap.cxx.

References _aPar, _bPar, _cPar, PndFsmTrack::p4(), and sqrt().

Referenced by respond().

136 {
137  double E = t->p4().E();
138 
139  return (_aPar+_bPar/E+_cPar/sqrt(E) ) * E;
140 }
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
TLorentzVector p4()
Definition: PndFsmTrack.h:72
bool PndFsmEmcFwCap::detected ( PndFsmTrack t) const
private

Definition at line 122 of file PndFsmEmcFwCap.cxx.

References PndFsmAbsDet::_efficiency, _Emin, PndFsmAbsDet::_rand, _thtMin, FsmDetEnum::EmcFwCap, PndFsmTrack::hitMapResponse(), PndFsmTrack::hitMapValid(), PndFsmTrack::p4(), PndFsmTrack::pdt(), and theta.

Referenced by respond().

123 {
124  if (t->hitMapValid()) {
126  } else {
127  double theta = t->p4().Theta();
128  double E=t->p4().E();
129  double lund = t->pdt();
130  return ( lund==22 && theta>=_thtMin && theta<=_thtMax && E>_Emin && _rand->Rndm()<=_efficiency);
131  }
132 }
double _efficiency
Definition: PndFsmAbsDet.h:93
bool hitMapResponse(unsigned int)
Definition: PndFsmTrack.h:86
TRandom3 * _rand
Definition: PndFsmAbsDet.h:94
TLorentzVector p4()
Definition: PndFsmTrack.h:72
bool hitMapValid()
Definition: PndFsmTrack.h:85
const std::string& PndFsmAbsDet::detName ( )
inlineinherited
Bool_t PndFsmAbsDet::doesPid ( ) const
inlineinherited

Definition at line 76 of file PndFsmAbsDet.h.

References PndFsmAbsDet::_doesPid.

Referenced by PndFastSim::Register(), and PndFastSim::smearTrack().

76 {return _doesPid;};
Bool_t _doesPid
Definition: PndFsmAbsDet.h:96
double PndFsmEmcFwCap::dphi ( PndFsmTrack t) const
private

Definition at line 143 of file PndFsmEmcFwCap.cxx.

References _dist, _resFactor, _xtalDim, PndFsmTrack::p4(), and theta.

Referenced by respond().

144 {
145  double theta = t->p4().Vect().Theta();
146 
147  return (_resFactor*M_PI/int(2*M_PI*_dist*tan(theta)/_xtalDim) );
148 }
TLorentzVector p4()
Definition: PndFsmTrack.h:72
double PndFsmEmcFwCap::dtheta ( PndFsmTrack t) const
private

Definition at line 151 of file PndFsmEmcFwCap.cxx.

References _dist, _resFactor, _xtalDim, cos(), PndFsmTrack::p4(), and theta.

Referenced by respond().

152 {
153  double theta = t->p4().Vect().Theta();
154  return ( _resFactor*atan(_xtalDim*cos(theta)/(2*_dist)) );
155 }
friend F32vec4 cos(const F32vec4 &a)
Definition: P4_F32vec4.h:112
TLorentzVector p4()
Definition: PndFsmTrack.h:72
void PndFsmEmcFwCap::initParameters ( )
privatevirtual

Reimplemented from PndFsmAbsDet.

Definition at line 175 of file PndFsmEmcFwCap.cxx.

References _aPar, _bPar, _cPar, PndFsmAbsDet::_detName, _dist, PndFsmAbsDet::_efficiency, _Emin, _radiationLength, _resFactor, _thtMax, _thtMin, _xtalDim, FsmDetEnum::EmcFwCap, and FsmDetName::name().

Referenced by PndFsmEmcFwCap().

176 {
177  _detName = "EmcFwCap";
179  _aPar=4.52495e-3;
180  _bPar=2.9539e-3;
181  _cPar=7.7596e-3;
182  //_aPar = 0.01;
183  //_bPar = 0.01;
184  _xtalDim = 0.02;
185  _Emin = 0.01;
186  _dist = 2.5;
187  _resFactor = 0.25;
188  _thtMin = 5.0;
189  _thtMax = 22.0;
190  _radiationLength = 0.0;
191  _efficiency =1.0;
192 }
double _radiationLength
double _efficiency
Definition: PndFsmAbsDet.h:93
static const std::string & name(unsigned int t)
Definition: FsmDetTypes.h:26
std::string _detName
Definition: PndFsmAbsDet.h:92
void PndFsmAbsDet::parseParameterList ( ArgList par)
protectedinherited

Definition at line 119 of file PndFsmAbsDet.cxx.

References CStrTok::GetFirst(), CStrTok::GetNext(), name, and PndFsmAbsDet::setParameter().

Referenced by PndFsmAbsDet::PndFsmAbsDet(), PndFsmCmpDet::PndFsmCmpDet(), PndFsmCombiDet::PndFsmCombiDet(), PndFsmDetTemplate::PndFsmDetTemplate(), PndFsmDrcBarrel::PndFsmDrcBarrel(), PndFsmDrcDisc::PndFsmDrcDisc(), PndFsmEffTracker::PndFsmEffTracker(), PndFsmEmcBarrel::PndFsmEmcBarrel(), PndFsmEmcBwCap::PndFsmEmcBwCap(), PndFsmEmcFS::PndFsmEmcFS(), PndFsmEmcFwCap(), PndFsmEmcPid::PndFsmEmcPid(), PndFsmIdealPid::PndFsmIdealPid(), PndFsmMdcFS::PndFsmMdcFS(), PndFsmMdcTS::PndFsmMdcTS(), PndFsmMdtPid::PndFsmMdtPid(), PndFsmMvd::PndFsmMvd(), PndFsmMvd2::PndFsmMvd2(), PndFsmMvdPid::PndFsmMvdPid(), PndFsmRich::PndFsmRich(), PndFsmSimpleTracker::PndFsmSimpleTracker(), PndFsmSimpleVtx::PndFsmSimpleVtx(), PndFsmStt::PndFsmStt(), PndFsmSttPid::PndFsmSttPid(), and PndFsmTof::PndFsmTof().

120 {
121  // ArgList is a std::list<std::string> of the form ("a=1","b=2","c=3","d=4")
122 
123  // Default values for the parameters
124 
125  CStrTok tokenizer;
126  char csrc[200];
127 
128  if (par.size() != 0) {
129 
130  //cout <<"Parameters for detector <"<<_detName<<">"<<endl;
131  for(ArgList::const_iterator argIt=par.begin(); argIt!=par.end();argIt++) {
132 
133  const char *src=argIt->data();
134  strcpy(csrc,src);
135 
136  char* token = tokenizer.GetFirst(csrc,"=");
137  string name(token);
138  //cout <<"variable: -" << name << "- ";
139  token = tokenizer.GetNext("=");
140 
141  double value = atof(token);
142  string strvalue(token);
143 
144  //cout <<"value: -"<<value<<"- "<<endl;
145 
146  if (value!=0 || strvalue=="0" || strvalue=="0.0" || strvalue=="0.")
147  {
148  if (!setParameter(name,value))
149  cout <<" -W- (PndFsmAbsDet::parseParameterList) Unknown Parameter: <"<<name<< endl;
150  }
151  else
152  {
153  if (!setParameter(name,strvalue))
154  cout <<" -W- (PndFsmAbsDet::parseParameterList) Unknown Parameter: <"<<name<< endl;
155  }
156 
157  }
158  }
159 
160  /*
161  if (par.size() != 0) {
162 
163  //cout <<"Parameters for detector <"<<_detName<<">"<<endl;
164  for(ArgList::const_iterator argIt=par.begin(); argIt!=par.end();argIt++) {
165  typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
166  boost::char_separator<char> sep("=");
167  tokenizer tokens(*argIt, sep);
168  tokenizer::iterator tok_iter = tokens.begin();
169  string name(*tok_iter);
170  ++tok_iter;
171  double value=atof((*tok_iter).c_str());
172 
173  //cout <<"<"<<name<<"> = "<<value<<endl;
174 
175  string name("efficiency");
176  double value=0.99;
177  if (!setParameter(name,value))
178  cout <<" -W- Unknown Parameter: <"<<name<<"> in PndFsmAbsDet::parseParameterList" << endl;
179  }
180  }
181  */
182  //print(std::cout);
183 
184 }
Double_t par[3]
char * GetFirst(char *lpsz, const char *lpcszDelimiters)
Definition: StrTok.cxx:29
TString name
Definition: StrTok.h:11
virtual bool setParameter(std::string &name, double value)
char * GetNext(const char *lpcszDelimiters)
Definition: StrTok.cxx:37
void PndFsmEmcFwCap::print ( std::ostream o)
privatevirtual

Reimplemented from PndFsmAbsDet.

Definition at line 158 of file PndFsmEmcFwCap.cxx.

References _aPar, _bPar, _cPar, PndFsmAbsDet::_detName, _dist, PndFsmAbsDet::_efficiency, _Emin, _radiationLength, _resFactor, _thtMax, _thtMin, and _xtalDim.

159 {
160  o <<"Detector <"<<_detName<<">"<<endl;
161  o <<" _aPar = "<<_aPar<<endl;
162  o <<" _bPar = "<<_bPar<<endl;
163  o <<" _cPar = "<<_cPar<<endl;
164  o <<" _xtalDim = "<<_xtalDim<<endl;
165  o <<" _Emin = "<<_Emin<<endl;
166  o <<" _dist = "<<_dist<<endl;
167  o <<" _resFactor = "<<_resFactor<<endl;
168  o <<" _thtMin = "<<_thtMin<<endl;
169  o <<" _thtMax = "<<_thtMax<<endl;
170  o <<" _radiationLength = "<<_radiationLength<<endl;
171  o <<" _efficiency = "<<_efficiency<<endl;
172 }
double _radiationLength
double _efficiency
Definition: PndFsmAbsDet.h:93
std::string _detName
Definition: PndFsmAbsDet.h:92
PndFsmResponse * PndFsmEmcFwCap::respond ( PndFsmTrack t)
virtual

Accessors to contained information

Implements PndFsmAbsDet.

Definition at line 92 of file PndFsmEmcFwCap.cxx.

References _dist, PndFsmTrack::charge(), dE(), detected(), dphi(), dtheta(), fabs(), PndFsmTrack::p4(), PndFsmResponse::setdE(), PndFsmResponse::setDetected(), PndFsmResponse::setDetector(), PndFsmResponse::setdphi(), PndFsmResponse::setdtheta(), PndFsmTrack::setStopVtx(), x, and y.

93 {
94  PndFsmResponse *result=new PndFsmResponse();
95 
96  result->setDetector(this);
97  bool wasDetected=detected(t);
98  result->setDetected(wasDetected);
99 
100  if (wasDetected && fabs(t->charge())<1e-8)
101  {
102  result->setdE(dE(t));
103  result->setdphi(dphi(t));
104  result->setdtheta(dtheta(t));
105  double zscale = t->p4().Pz()/_dist;
106  double x = t->p4().Px()/zscale;
107  double y = t->p4().Py()/zscale;
108  TVector3 hitpos(x,y,_dist);
109  t->setStopVtx(hitpos);
110  }
111  else
112  {
113  result->setdE(0.);
114  result->setdphi(0.);
115  result->setdtheta(0.);
116  }
117 
118  return result;
119 }
void setdphi(double val)
bool detected(PndFsmTrack *t) const
void setStopVtx(TVector3 v)
double charge()
Definition: PndFsmTrack.h:75
TLorentzVector p4()
Definition: PndFsmTrack.h:72
void setDetector(PndFsmAbsDet *detector)
double dphi(PndFsmTrack *t) const
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
void setdE(double val)
Double_t x
void setDetected(bool isdet)
void setdtheta(double val)
Double_t y
double dE(PndFsmTrack *t) const
double dtheta(PndFsmTrack *t) const
void PndFsmAbsDet::setName ( std::string &  name)
inlineinherited

Definition at line 75 of file PndFsmAbsDet.h.

References PndFsmAbsDet::_detName, and name.

Referenced by PndFsmDetFactory::create().

75 {_detName = name;};
TString name
std::string _detName
Definition: PndFsmAbsDet.h:92
bool PndFsmEmcFwCap::setParameter ( std::string &  name,
double  value 
)
privatevirtual

Reimplemented from PndFsmAbsDet.

Definition at line 195 of file PndFsmEmcFwCap.cxx.

References _aPar, _bPar, _cPar, _dist, PndFsmAbsDet::_efficiency, _Emin, _radiationLength, _resFactor, _thtMax, _thtMin, and _xtalDim.

196 {
197  // *****************
198  // include here all parameters which should be settable via tcl
199  // *****************
200 
201  bool knownName=true;
202 
203  if (name == "aPar")
204  _aPar=value;
205  else
206  if (name == "bPar")
207  _bPar=value;
208  else
209  if (name == "cPar")
210  _cPar=value;
211  else
212  if (name == "xtalDim")
213  _xtalDim=value;
214  else
215  if (name == "Emin")
216  _Emin=value;
217  else
218  if (name == "dist")
219  _dist=value;
220  else
221  if (name == "resFactor")
222  _resFactor=value;
223  else
224  if (name == "thtMin")
225  _thtMin=value;
226  else
227  if (name == "thtMax")
228  _thtMax=value;
229  else
230  if (name == "radiationLength")
231  _radiationLength=value;
232  else
233  if (name == "efficiency")
234  _efficiency=value;
235  else
236  knownName=false;
237 
238  return knownName;
239 }
double _radiationLength
double _efficiency
Definition: PndFsmAbsDet.h:93
TString name
bool PndFsmAbsDet::setParameter ( std::string &  name,
std::string &  value 
)
protectedvirtualinherited

Reimplemented in PndFsmDrcBarrel, PndFsmDrcDisc, PndFsmCombiDet, and PndFsmCmpDet.

Definition at line 99 of file PndFsmAbsDet.cxx.

100 {
101  return false;
102 }
void PndFsmAbsDet::setStorePid ( Bool_t  doespid = kTRUE)
inlineinherited

Definition at line 77 of file PndFsmAbsDet.h.

References PndFsmAbsDet::_doesPid.

Referenced by PndFsmDetFactory::create().

77 {_doesPid=doespid;};
Bool_t _doesPid
Definition: PndFsmAbsDet.h:96

Member Data Documentation

double PndFsmEmcFwCap::_aPar
private

Definition at line 80 of file PndFsmEmcFwCap.h.

Referenced by dE(), initParameters(), print(), and setParameter().

double PndFsmEmcFwCap::_bPar
private

Definition at line 81 of file PndFsmEmcFwCap.h.

Referenced by dE(), initParameters(), print(), and setParameter().

double PndFsmEmcFwCap::_cPar
private

Definition at line 82 of file PndFsmEmcFwCap.h.

Referenced by dE(), initParameters(), print(), and setParameter().

std::string PndFsmAbsDet::_detName
protectedinherited
double PndFsmEmcFwCap::_dist
private

Definition at line 85 of file PndFsmEmcFwCap.h.

Referenced by dphi(), dtheta(), initParameters(), print(), respond(), and setParameter().

Bool_t PndFsmAbsDet::_doesPid
protectedinherited
double PndFsmAbsDet::_efficiency
protectedinherited

Definition at line 93 of file PndFsmAbsDet.h.

Referenced by PndFsmDetTemplate::detected(), PndFsmSimpleTracker::detected(), PndFsmTof::detected(), PndFsmEmcBwCap::detected(), PndFsmStt::detected(), PndFsmEmcFS::detected(), detected(), PndFsmMdcFS::detected(), PndFsmSimpleVtx::detected(), PndFsmSttPid::detected(), PndFsmMdcTS::detected(), PndFsmMvd::detected(), PndFsmMvd2::detected(), PndFsmMvdPid::detected(), PndFsmRich::detected(), PndFsmEmcBarrel::detected(), PndFsmDrcDisc::detected(), PndFsmMdtPid::detected(), PndFsmDrcBarrel::detected(), PndFsmEmcPid::detected(), PndFsmEffTracker::detected(), PndFsmSimpleTracker::initParameters(), PndFsmSimpleVtx::initParameters(), PndFsmDetTemplate::initParameters(), PndFsmMvdPid::initParameters(), PndFsmTof::initParameters(), PndFsmMdtPid::initParameters(), PndFsmEmcPid::initParameters(), initParameters(), PndFsmRich::initParameters(), PndFsmMdcFS::initParameters(), PndFsmSttPid::initParameters(), PndFsmMdcTS::initParameters(), PndFsmEmcBwCap::initParameters(), PndFsmEmcFS::initParameters(), PndFsmMvd2::initParameters(), PndFsmEmcBarrel::initParameters(), PndFsmDrcDisc::initParameters(), PndFsmDrcBarrel::initParameters(), PndFsmStt::initParameters(), PndFsmMvd::initParameters(), PndFsmEffTracker::initParameters(), PndFsmSimpleTracker::print(), PndFsmSimpleVtx::print(), PndFsmDetTemplate::print(), PndFsmMvdPid::print(), PndFsmTof::print(), PndFsmMdtPid::print(), PndFsmEmcPid::print(), PndFsmEmcFS::print(), PndFsmSttPid::print(), PndFsmMdcTS::print(), PndFsmEmcBwCap::print(), PndFsmMvd2::print(), PndFsmMdcFS::print(), print(), PndFsmRich::print(), PndFsmEmcBarrel::print(), PndFsmDrcDisc::print(), PndFsmDrcBarrel::print(), PndFsmStt::print(), PndFsmMvd::print(), PndFsmEffTracker::print(), PndFsmSimpleTracker::setParameter(), PndFsmSimpleVtx::setParameter(), PndFsmDetTemplate::setParameter(), PndFsmMvdPid::setParameter(), PndFsmMdtPid::setParameter(), PndFsmTof::setParameter(), PndFsmEmcPid::setParameter(), PndFsmMvd2::setParameter(), PndFsmEmcFS::setParameter(), PndFsmSttPid::setParameter(), PndFsmMdcTS::setParameter(), setParameter(), PndFsmMdcFS::setParameter(), PndFsmRich::setParameter(), PndFsmEmcBwCap::setParameter(), PndFsmEmcBarrel::setParameter(), PndFsmDrcBarrel::setParameter(), PndFsmDrcDisc::setParameter(), PndFsmMvd::setParameter(), PndFsmStt::setParameter(), and PndFsmEffTracker::setParameter().

double PndFsmEmcFwCap::_Emin
private

Definition at line 84 of file PndFsmEmcFwCap.h.

Referenced by detected(), initParameters(), print(), and setParameter().

TDatabasePDG* PndFsmAbsDet::_fdbPDG
protectedinherited
double PndFsmEmcFwCap::_radiationLength
private

Definition at line 89 of file PndFsmEmcFwCap.h.

Referenced by initParameters(), print(), and setParameter().

TRandom3* PndFsmAbsDet::_rand
protectedinherited
double PndFsmEmcFwCap::_resFactor
private

Definition at line 86 of file PndFsmEmcFwCap.h.

Referenced by dphi(), dtheta(), initParameters(), print(), and setParameter().

double PndFsmEmcFwCap::_thtMax
private

Definition at line 88 of file PndFsmEmcFwCap.h.

Referenced by initParameters(), PndFsmEmcFwCap(), print(), and setParameter().

double PndFsmEmcFwCap::_thtMin
private

Definition at line 87 of file PndFsmEmcFwCap.h.

Referenced by detected(), initParameters(), PndFsmEmcFwCap(), print(), and setParameter().

double PndFsmEmcFwCap::_xtalDim
private

Definition at line 83 of file PndFsmEmcFwCap.h.

Referenced by dphi(), dtheta(), initParameters(), print(), and setParameter().


The documentation for this class was generated from the following files: