17 EVENT::ClusterVec cluvec=particle->getClusters();
18 EVENT::TrackVec trk = particle->getTracks();
19 TVector3 p3(particle->getMomentum());
21 return Update(cluvec, trk, p3);
26 float bg=p/hypothesis->
mass;
27 float b=sqrt(bg*bg/(1.0+bg*bg));
29 float tmax=hypothesis->
GetBBpars()[2]*TMath::Power(bg,2.0);
31 return (0.5*hypothesis->
GetBBpars()[0]*TMath::Log(hypothesis->
GetBBpars()[1]*TMath::Power(bg,2.0)*tmax)
54 float ecal=0., hcal=0.;
56 for(
unsigned int i=0; i<cluvec.size(); i++){
57 FloatVec sde = cluvec[i]->getSubdetectorEnergies();
82 float ecal=0., hcal=0.;
84 for(
unsigned int i=0; i<cluvec.size(); i++){
85 FloatVec sde = cluvec[i]->getSubdetectorEnergies();
95 _value = ecal/(ecal+hcal) ;
119 for(
unsigned int i=0; i<cluvec.size(); i++){
120 FloatVec sde = cluvec[i]->getSubdetectorEnergies();
146 if (cluvec.size() < 1) {
151 FloatVec shapes=cluvec[0]->getShape();
152 if(shapes.size()!=0){
173 if (cluvec.size() < 1) {
178 FloatVec shapes=cluvec[0]->getShape();
179 if(shapes.size()!=0){
195 if (cluvec.size() < 1) {
200 FloatVec shapes=cluvec[0]->getShape();
201 if(shapes.size()!=0){
202 _value = shapes[3]/shapes[6];
217 if (cluvec.size() < 1) {
222 FloatVec shapes=cluvec[0]->getShape();
223 if(shapes.size()!=0){
224 _value = shapes[15]/(2.0*3.50);
238 _hypothesis(ref._hypothesis), _dEdx_MIP(ref._dEdx_MIP)
242 PIDVariable_base(TString::Format(
"dEdx_chi2_%s", hypothesis->Name()).Data(),
243 TString::Format(
"#chi2_{dE/dx %s}", hypothesis->Name()).Data(),
""),
244 _hypothesis(hypothesis), _dEdx_MIP(dEdx_MIP)
253 const EVENT::TrackVec trax,
const TVector3 p3)
258 if(trax.size() > 0) { dEdx = trax.at(0)->getdEdx(); }
266 double normdev = (dEdx-ExpdEdx)/(0.05*dEdx);
267 _value = TMath::Sign(TMath::Power(normdev, 2), normdev);
280 _hypothesis(ref._hypothesis), _dEdx_MIP(ref._dEdx_MIP)
285 Form(
"Log(#chi2_{dE/dx %s})", hypothesis->Name()),
""),
286 _hypothesis(hypothesis), _dEdx_MIP(dEdx_MIP)
295 const EVENT::TrackVec trax,
const TVector3 p3)
300 if(trax.size() > 0) { dEdx = trax.at(0)->getdEdx(); }
308 float normdev = (dEdx-ExpdEdx)/(0.05*dEdx);
309 _value = TMath::Sign(
float( 2.*TMath::Log(fabs(normdev)+FLT_MIN) ), normdev);
344 EVENT::ClusterVec cluvec=_particle->getClusters();
345 EVENT::TrackVec trk = _particle->getTracks();
346 TVector3 p3(_particle->getMomentum());
348 return Update(cluvec, trk, p3);
353 const EVENT::TrackVec trax,
const TVector3 p3){
356 for (VarVec::iterator vit=
_varVec.begin(); vit!=
_varVec.end(); vit++) {
357 result |= (*vit)->Update(cluvec, trax, p3);
366 for (VarVec::iterator vit=
_varVec.begin(); vit!=
_varVec.end(); vit++)
367 { (*vit)->SetOutOfRange(); }
446 for(
unsigned int i=0; i<
_varVec.size(); i++) {
468 for(
unsigned int i=0; i<
_varVec.size(); i++) {
const PIDParticles::PIDParticle_base * _hypothesis
virtual int Update(const EVENT::ClusterVec, const EVENT::TrackVec, const TVector3 p3)
const PIDParticles::PIDParticle_base * _hypothesis
virtual void SetOutOfRange()
virtual int Update(EVENT::ReconstructedParticle *)
static double BetheBloch(const PIDParticles::PIDParticle_base *hypothesis, const float p)
virtual void SetOutOfRange()
virtual void SetOutOfRange()
virtual void SetOutOfRange()
virtual int Update(const EVENT::ClusterVec, const EVENT::TrackVec, const TVector3 p3)
static TRandom3 * varRand
virtual int Update(const EVENT::ClusterVec, const EVENT::TrackVec, const TVector3 p3)
static const PIDParticle_base pionProperties("pion", 211,.139570, BBparsPion)
virtual int Update(const EVENT::ClusterVec, const EVENT::TrackVec, const TVector3 p3)
virtual ~PIDVariables_LLPID()
static const short MASK_EmptyShapes
static const PIDParticle_base muonProperties("muon", 13,.105658, BBparsMuon)
static const PIDParticle_base kaonProperties("kaon", 321,.493677, BBparsKaon)
virtual int Update(const EVENT::ClusterVec, const EVENT::TrackVec, const TVector3 p3)
const double * GetBBpars() const
static const float caloCut
static const short MASK_ZerodEdx
virtual ~PIDVariables_MvaPid()
virtual int Update(const EVENT::ClusterVec, const EVENT::TrackVec, const TVector3 p3)
virtual void SetOutOfRange()
virtual int Update(EVENT::ReconstructedParticle *)
static const PIDParticle_base protonProperties("proton", 2212,.938272, BBparsProton)
virtual int Update(const EVENT::ClusterVec, const EVENT::TrackVec, const TVector3 p3)
virtual void SetOutOfRange()
static const short MASK_InvalidMomentum
static const PIDParticle_base electronProperties("electron", 11,.000510998, BBparsElectron)
virtual void SetOutOfRange()
virtual int Update(const EVENT::ClusterVec, const EVENT::TrackVec, const TVector3 p3)
virtual int Update(const EVENT::ClusterVec, const EVENT::TrackVec, const TVector3 p3)
virtual ~PIDVariables_base()=0
PID_dEdxLogChi2(const PID_dEdxLogChi2 &)
virtual int Update(EVENT::ReconstructedParticle *)
virtual void SetOutOfRange()
PID_dEdxChi2(const PID_dEdxChi2 &)
virtual void SetOutOfRange()
static const float muSysCut
static const short MASK_EmptyClusters
static const short MASK_EmptyTracks