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

#include <PndFsmMdcFS.h>

Inheritance diagram for PndFsmMdcFS:
PndFsmAbsDet

Public Member Functions

 PndFsmMdcFS ()
 
 PndFsmMdcFS (ArgList &par)
 
virtual ~PndFsmMdcFS ()
 
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 dp (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 _thtMin
 
double _thtMax
 
double _angleXMax
 
double _angleYMax
 
double _radiationLength
 
double _pmin
 
double _a1Par
 
double _a2Par
 
double _Bl
 

Detailed Description

Definition at line 41 of file PndFsmMdcFS.h.

Constructor & Destructor Documentation

PndFsmMdcFS::PndFsmMdcFS ( )

Default ctor.

Definition at line 58 of file PndFsmMdcFS.cxx.

References _angleXMax, _angleYMax, _thtMax, _thtMin, and initParameters().

59 {
61 
62  _thtMin=_thtMin*M_PI/180.0;
63  _thtMax=_thtMax*M_PI/180.0;
64  _angleXMax *= M_PI/180.0;
65  _angleYMax *= M_PI/180.0;
66  //print(std::cout);
67 }
double _thtMin
Definition: PndFsmMdcFS.h:80
double _thtMax
Definition: PndFsmMdcFS.h:81
double _angleYMax
Definition: PndFsmMdcFS.h:83
void initParameters()
double _angleXMax
Definition: PndFsmMdcFS.h:82
PndFsmMdcFS::PndFsmMdcFS ( ArgList par)

Definition at line 69 of file PndFsmMdcFS.cxx.

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

70 {
72  //set default parameter values and parses a parameter list
73  //i.e. std::list<std::string> of the form
74  //"a=1" "b=2" "c=3"
76 
77  _thtMin=_thtMin*M_PI/180.0;
78  _thtMax=_thtMax*M_PI/180.0;
79  _angleXMax *= M_PI/180.0;
80  _angleYMax *= M_PI/180.0;
81 
82 
83  //print(std::cout);
84 }
Double_t par[3]
void parseParameterList(ArgList &par)
double _thtMin
Definition: PndFsmMdcFS.h:80
double _thtMax
Definition: PndFsmMdcFS.h:81
double _angleYMax
Definition: PndFsmMdcFS.h:83
void initParameters()
double _angleXMax
Definition: PndFsmMdcFS.h:82
PndFsmMdcFS::~PndFsmMdcFS ( )
virtual

Destructor

Definition at line 90 of file PndFsmMdcFS.cxx.

91 {
92 }

Member Function Documentation

bool PndFsmMdcFS::detected ( PndFsmTrack t) const
private

Definition at line 124 of file PndFsmMdcFS.cxx.

References _angleXMax, PndFsmAbsDet::_efficiency, _pmin, PndFsmAbsDet::_rand, _thtMin, PndFsmTrack::charge(), FsmDetEnum::Dch3, FsmDetEnum::Dch4, FsmDetEnum::Dch5, FsmDetEnum::Dch6, FsmDetEnum::Dch7, FsmDetEnum::Dch8, fabs(), PndFsmTrack::hitMapResponse(), PndFsmTrack::hitMapValid(), p, PndFsmTrack::p4(), and theta.

Referenced by respond().

125 {
126  if (t->hitMapValid()) {
128  } else {
129  double theta = t->p4().Theta();
130 
131  if (t->p4().Z()<=0) return false;
132 
133  double angleX = fabs(atan(t->p4().X()/t->p4().Z()));
134  double angleY = fabs(atan(t->p4().Y()/t->p4().Z()));
135  double p=t->p4().Vect().Mag();
136  double charge=t->charge();
137  return ( charge!=0.0 && theta>=_thtMin && angleX<=_angleXMax && angleY<=_angleYMax && p>_pmin && _rand->Rndm()<=_efficiency);
138  }
139 }
double _efficiency
Definition: PndFsmAbsDet.h:93
bool hitMapResponse(unsigned int)
Definition: PndFsmTrack.h:86
double charge()
Definition: PndFsmTrack.h:75
TRandom3 * _rand
Definition: PndFsmAbsDet.h:94
double _thtMin
Definition: PndFsmMdcFS.h:80
Double_t p
Definition: anasim.C:58
TLorentzVector p4()
Definition: PndFsmTrack.h:72
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
bool hitMapValid()
Definition: PndFsmTrack.h:85
double _angleXMax
Definition: PndFsmMdcFS.h:82
double _pmin
Definition: PndFsmMdcFS.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 PndFsmMdcFS::dp ( PndFsmTrack t) const
private

Definition at line 142 of file PndFsmMdcFS.cxx.

References _a1Par, _a2Par, _Bl, mom, PndFsmTrack::p4(), and sqrt().

Referenced by respond().

143 {
144  TLorentzVector p4=t->p4();
145  double mom=p4.Vect().Mag();
146  double rad=_a1Par*_a1Par*mom*mom + _a2Par*_a2Par;
147  if (rad<0 || mom==0 ) return 0.0;
148  double sigp = sqrt(rad) / _Bl * mom;
149 
150  return sigp;
151 }
double _a2Par
Definition: PndFsmMdcFS.h:88
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
Double_t mom
Definition: plot_dirc.C:14
TLorentzVector p4()
Definition: PndFsmTrack.h:72
double _a1Par
Definition: PndFsmMdcFS.h:87
double _Bl
Definition: PndFsmMdcFS.h:89
double PndFsmMdcFS::dphi ( PndFsmTrack t) const
private

Definition at line 154 of file PndFsmMdcFS.cxx.

Referenced by respond().

155 {
156  return 0.0002; //to be refined
157 }
double PndFsmMdcFS::dtheta ( PndFsmTrack t) const
private

Definition at line 160 of file PndFsmMdcFS.cxx.

Referenced by respond().

161 {
162  return 0.0002; //to be refined
163 }
void PndFsmMdcFS::initParameters ( )
privatevirtual

Reimplemented from PndFsmAbsDet.

Definition at line 181 of file PndFsmMdcFS.cxx.

References _a1Par, _a2Par, _angleXMax, _angleYMax, _Bl, PndFsmAbsDet::_detName, PndFsmAbsDet::_efficiency, _pmin, _radiationLength, and _thtMin.

Referenced by PndFsmMdcFS().

182 {
183  _detName = "MdcFS";
184  _thtMin = 0.5;
185  _angleXMax = 10.0;
186  _angleYMax = 5.0;
187  _radiationLength = 0.0;
188  _pmin = 0.7;
189  _a1Par = 0.00113;
190  _a2Par = 0.00227;
191  _Bl = 2.0;
192  _efficiency =1.0;
193 
194 }
double _a2Par
Definition: PndFsmMdcFS.h:88
double _radiationLength
Definition: PndFsmMdcFS.h:84
double _efficiency
Definition: PndFsmAbsDet.h:93
double _thtMin
Definition: PndFsmMdcFS.h:80
double _angleYMax
Definition: PndFsmMdcFS.h:83
double _a1Par
Definition: PndFsmMdcFS.h:87
double _Bl
Definition: PndFsmMdcFS.h:89
double _angleXMax
Definition: PndFsmMdcFS.h:82
std::string _detName
Definition: PndFsmAbsDet.h:92
double _pmin
Definition: PndFsmMdcFS.h:85
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::PndFsmEmcFwCap(), PndFsmEmcPid::PndFsmEmcPid(), PndFsmIdealPid::PndFsmIdealPid(), 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 PndFsmMdcFS::print ( std::ostream o)
privatevirtual

Reimplemented from PndFsmAbsDet.

Definition at line 166 of file PndFsmMdcFS.cxx.

References _a1Par, _a2Par, _angleXMax, _angleYMax, _Bl, PndFsmAbsDet::_efficiency, _pmin, _radiationLength, _thtMin, and PndFsmAbsDet::detName().

167 {
168  o <<"Parameters for detector <"<<detName()<<">"<<endl;
169  o <<" _thtMin = "<<_thtMin<<endl;
170  o <<" _angleXMax = "<<_angleXMax<<endl;
171  o <<" _angleYMax = "<<_angleYMax<<endl;
172  o <<" _radiationLength = "<<_radiationLength<<endl;
173  o <<" _pmin = "<<_pmin<<endl;
174  o <<" _a1Par = "<<_a1Par<<endl;
175  o <<" _a2Par = "<<_a2Par<<endl;
176  o <<" _Bl = "<<_Bl<<endl;
177  o <<" _efficiency = "<<_efficiency<<endl;
178 }
double _a2Par
Definition: PndFsmMdcFS.h:88
double _radiationLength
Definition: PndFsmMdcFS.h:84
double _efficiency
Definition: PndFsmAbsDet.h:93
double _thtMin
Definition: PndFsmMdcFS.h:80
double _angleYMax
Definition: PndFsmMdcFS.h:83
const std::string & detName()
Definition: PndFsmAbsDet.h:74
double _a1Par
Definition: PndFsmMdcFS.h:87
double _Bl
Definition: PndFsmMdcFS.h:89
double _angleXMax
Definition: PndFsmMdcFS.h:82
double _pmin
Definition: PndFsmMdcFS.h:85
PndFsmResponse * PndFsmMdcFS::respond ( PndFsmTrack t)
virtual

Accessors to contained information

Implements PndFsmAbsDet.

Definition at line 99 of file PndFsmMdcFS.cxx.

References PndFsmTrack::charge(), detected(), dp(), dphi(), dtheta(), fabs(), PndFsmResponse::setDetected(), PndFsmResponse::setDetector(), PndFsmResponse::setdp(), PndFsmResponse::setdphi(), and PndFsmResponse::setdtheta().

100 {
101  PndFsmResponse *result=new PndFsmResponse();
102 
103  result->setDetector(this);
104  bool wasDetected=detected(t);
105  result->setDetected(wasDetected);
106 
107  if (wasDetected && fabs(t->charge())>1e-8)
108  {
109  result->setdp(dp(t));
110  result->setdphi(dphi(t));
111  result->setdtheta(dtheta(t));
112  }
113  else
114  {
115  result->setdp(0.);
116  result->setdphi(0.);
117  result->setdtheta(0.);
118  }
119 
120  return result;
121 }
void setdphi(double val)
double charge()
Definition: PndFsmTrack.h:75
void setDetector(PndFsmAbsDet *detector)
bool detected(PndFsmTrack *t) const
double dp(PndFsmTrack *t) const
void setdp(double val)
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
double dphi(PndFsmTrack *t) const
double dtheta(PndFsmTrack *t) const
void setDetected(bool isdet)
void setdtheta(double val)
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 PndFsmMdcFS::setParameter ( std::string &  name,
double  value 
)
privatevirtual

Reimplemented from PndFsmAbsDet.

Definition at line 197 of file PndFsmMdcFS.cxx.

References _a1Par, _a2Par, _angleXMax, _angleYMax, _Bl, PndFsmAbsDet::_efficiency, _pmin, _radiationLength, and _thtMin.

198 {
199  // *****************
200  // include here all parameters which should be settable via tcl
201  // *****************
202 
203  bool knownName=true;
204 
205  if (name == "thtMin")
206  _thtMin=value;
207  else
208  if (name == "angleXMax")
209  _angleXMax=value;
210  else
211  if (name == "angleYMax")
212  _angleYMax=value;
213  else
214  if (name == "radiationLength")
215  _radiationLength=value;
216  else
217  if (name == "pmin")
218  _pmin=value;
219  else
220  if (name == "a1Par")
221  _a1Par=value;
222  else
223  if (name == "a2Par")
224  _a2Par=value;
225  else
226  if (name == "Bl")
227  _Bl=value;
228  else
229  if (name == "efficiency")
230  _efficiency=value;
231  else
232  knownName=false;
233 
234  return knownName;
235 }
double _a2Par
Definition: PndFsmMdcFS.h:88
double _radiationLength
Definition: PndFsmMdcFS.h:84
double _efficiency
Definition: PndFsmAbsDet.h:93
double _thtMin
Definition: PndFsmMdcFS.h:80
double _angleYMax
Definition: PndFsmMdcFS.h:83
double _a1Par
Definition: PndFsmMdcFS.h:87
double _Bl
Definition: PndFsmMdcFS.h:89
TString name
double _angleXMax
Definition: PndFsmMdcFS.h:82
double _pmin
Definition: PndFsmMdcFS.h:85
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 PndFsmMdcFS::_a1Par
private

Definition at line 87 of file PndFsmMdcFS.h.

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

double PndFsmMdcFS::_a2Par
private

Definition at line 88 of file PndFsmMdcFS.h.

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

double PndFsmMdcFS::_angleXMax
private

Definition at line 82 of file PndFsmMdcFS.h.

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

double PndFsmMdcFS::_angleYMax
private

Definition at line 83 of file PndFsmMdcFS.h.

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

double PndFsmMdcFS::_Bl
private

Definition at line 89 of file PndFsmMdcFS.h.

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

std::string PndFsmAbsDet::_detName
protectedinherited
Bool_t PndFsmAbsDet::_doesPid
protectedinherited
double PndFsmAbsDet::_efficiency
protectedinherited

Definition at line 93 of file PndFsmAbsDet.h.

Referenced by PndFsmDetTemplate::detected(), PndFsmSimpleTracker::detected(), PndFsmMdcTS::detected(), PndFsmMvd::detected(), PndFsmEmcBwCap::detected(), PndFsmTof::detected(), PndFsmStt::detected(), PndFsmMvd2::detected(), detected(), PndFsmSimpleVtx::detected(), PndFsmEmcFwCap::detected(), PndFsmSttPid::detected(), PndFsmEmcFS::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(), PndFsmRich::initParameters(), initParameters(), PndFsmSttPid::initParameters(), PndFsmMdcTS::initParameters(), PndFsmEmcBwCap::initParameters(), PndFsmEmcFS::initParameters(), PndFsmMvd2::initParameters(), PndFsmEmcFwCap::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(), print(), PndFsmEmcFwCap::print(), PndFsmRich::print(), PndFsmDrcDisc::print(), PndFsmEmcBarrel::print(), PndFsmDrcBarrel::print(), PndFsmStt::print(), PndFsmMvd::print(), PndFsmEffTracker::print(), PndFsmSimpleTracker::setParameter(), PndFsmMvdPid::setParameter(), PndFsmDetTemplate::setParameter(), PndFsmSimpleVtx::setParameter(), PndFsmMdtPid::setParameter(), PndFsmTof::setParameter(), PndFsmEmcPid::setParameter(), PndFsmMdcTS::setParameter(), PndFsmMvd2::setParameter(), PndFsmEmcFwCap::setParameter(), PndFsmSttPid::setParameter(), setParameter(), PndFsmRich::setParameter(), PndFsmEmcBwCap::setParameter(), PndFsmEmcFS::setParameter(), PndFsmEmcBarrel::setParameter(), PndFsmDrcDisc::setParameter(), PndFsmDrcBarrel::setParameter(), PndFsmStt::setParameter(), PndFsmMvd::setParameter(), and PndFsmEffTracker::setParameter().

TDatabasePDG* PndFsmAbsDet::_fdbPDG
protectedinherited
double PndFsmMdcFS::_pmin
private

Definition at line 85 of file PndFsmMdcFS.h.

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

double PndFsmMdcFS::_radiationLength
private

Definition at line 84 of file PndFsmMdcFS.h.

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

TRandom3* PndFsmAbsDet::_rand
protectedinherited
double PndFsmMdcFS::_thtMax
private

Definition at line 81 of file PndFsmMdcFS.h.

Referenced by PndFsmMdcFS().

double PndFsmMdcFS::_thtMin
private

Definition at line 80 of file PndFsmMdcFS.h.

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


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