10 #include "TMVA/Reader.h" 30 float highestpid = -999.0;
31 float pionbdtvalue = -999.0;
32 float protonbdtvalue = -999.0;
33 float gammabdtvalue = -999.0;
39 float fAvededxlast10cm = -999.0;
40 float fAvededxlast40cm = -999.0;
41 float fTrackStartGap = -999.0;
42 float fGapDensity = -999.0;
46 for (
int itrk = 0; itrk < nkals; ++itrk){
59 fAvededxlast10cm = 30;
65 fAvededxlast40cm = 30;
72 float trackstartgap = (vtxpos-trkpos).
Mag();
74 float angle = trkvec.Angle(beamDirND);
76 float coslength = length*
cos(angle);
79 fTrackStartGap=trackstartgap;
80 fGapDensity=ngaps/coslength;
84 TMVAvars[2] = fAvededxlast10cm;
85 TMVAvars[3] = fAvededxlast40cm;
86 TMVAvars[4] = fTrackStartGap;
87 TMVAvars[5] = fGapDensity;
93 pionbdtvalue = fReaderBDTPion->EvaluateMVA(
"BDTGPion");
94 protonbdtvalue = fReaderBDTProton->EvaluateMVA(
"BDTGProton");
95 gammabdtvalue = fReaderBDTGamma->EvaluateMVA(
"BDTGGamma");
97 if (pionbdtvalue > protonbdtvalue && pionbdtvalue > gammabdtvalue && pionbdtvalue > highestpid){
98 highestpid = pionbdtvalue;
109 float highestpid = -999.0;
111 float pionbdtvalue = -999.0;
112 float protonbdtvalue = -999.0;
113 float gammabdtvalue = -999.0;
119 float fAvededxlast10cm = -999.0;
120 float fAvededxlast40cm = -999.0;
121 float fTrackStartGap = -999.0;
122 float fGapDensity = -999.0;
126 for (
int itrk = 0; itrk < nkals; ++itrk){
139 fAvededxlast10cm = 30;
145 fAvededxlast40cm = 30;
152 float trackstartgap = (vtxpos-trkpos).
Mag();
154 float angle = trkvec.Angle(beamDirND);
156 float coslength = length*
cos(angle);
159 fTrackStartGap=trackstartgap;
160 fGapDensity=ngaps/coslength;
164 TMVAvars[2] = fAvededxlast10cm;
165 TMVAvars[3] = fAvededxlast40cm;
166 TMVAvars[4] = fTrackStartGap;
167 TMVAvars[5] = fGapDensity;
173 pionbdtvalue = fReaderBDTPion->EvaluateMVA(
"BDTGPion");
174 protonbdtvalue = fReaderBDTProton->EvaluateMVA(
"BDTGProton");
175 gammabdtvalue = fReaderBDTGamma->EvaluateMVA(
"BDTGGamma");
177 if (pionbdtvalue > protonbdtvalue && pionbdtvalue > gammabdtvalue && pionbdtvalue > highestpid){
179 highestpid = pionbdtvalue;
190 float highestpid = -999.0;
191 float pionbdtvalue = -999.0;
195 float fAvededxlast10cm = -999.0;
196 float fAvededxlast40cm = -999.0;
197 float fTrackStartGap = -999.0;
198 float fGapDensity = -999.0;
202 for (
int itrk = 0; itrk < nkals; ++itrk){
215 fAvededxlast10cm = 30;
221 fAvededxlast40cm = 30;
228 float trackstartgap = (vtxpos-trkpos).
Mag();
230 float angle = trkvec.Angle(beamDirND);
232 float coslength = length*
cos(angle);
235 fTrackStartGap=trackstartgap;
236 fGapDensity=ngaps/coslength;
240 TMVAvars[2] = fAvededxlast10cm;
241 TMVAvars[3] = fAvededxlast40cm;
242 TMVAvars[4] = fTrackStartGap;
243 TMVAvars[5] = fGapDensity;
247 pionbdtvalue = fReaderBDTPion->EvaluateMVA(
"BDTGPion");
249 if (pionbdtvalue > highestpid){
250 highestpid = pionbdtvalue;
261 float highestpid = -999.0;
263 float pionbdtvalue = -999.0;
267 float fAvededxlast10cm = -999.0;
268 float fAvededxlast40cm = -999.0;
269 float fTrackStartGap = -999.0;
270 float fGapDensity = -999.0;
274 for (
int itrk = 0; itrk < nkals; ++itrk){
287 fAvededxlast10cm = 30;
293 fAvededxlast40cm = 30;
300 float trackstartgap = (vtxpos-trkpos).
Mag();
302 float angle = trkvec.Angle(beamDirND);
304 float coslength = length*
cos(angle);
307 fTrackStartGap=trackstartgap;
308 fGapDensity=ngaps/coslength;
312 TMVAvars[2] = fAvededxlast10cm;
313 TMVAvars[3] = fAvededxlast40cm;
314 TMVAvars[4] = fTrackStartGap;
315 TMVAvars[5] = fGapDensity;
319 pionbdtvalue = fReaderBDTPion->EvaluateMVA(
"BDTGPion");
321 if (pionbdtvalue > highestpid){
323 highestpid = pionbdtvalue;
331 float pionbdtvalue = -999.0;
381 TMVAvars[2] = avededxlast10cm;
382 TMVAvars[3] = avededxlast40cm;
383 TMVAvars[4] = trackstartgap;
384 TMVAvars[5] = gapdensity;
388 pionbdtvalue = fReaderBDTPion->EvaluateMVA(
"BDTGPion");
396 float protonbdtvalue = -999.0;
446 TMVAvars[2] = avededxlast10cm;
447 TMVAvars[3] = avededxlast40cm;
448 TMVAvars[4] = trackstartgap;
449 TMVAvars[5] = gapdensity;
453 protonbdtvalue = fReaderBDTProton->EvaluateMVA(
"BDTGProton");
455 return protonbdtvalue;
461 float gammabdtvalue = -999.0;
511 TMVAvars[2] = avededxlast10cm;
512 TMVAvars[3] = avededxlast40cm;
513 TMVAvars[4] = trackstartgap;
514 TMVAvars[5] = gapdensity;
518 gammabdtvalue = fReaderBDTGamma->EvaluateMVA(
"BDTGGamma");
520 return gammabdtvalue;
526 if(!fReaderBDTPion) fReaderBDTPion =
new TMVA::Reader(
"!Color:!Silent" );
527 const char*
path =
getenv(
"SRT_PUBLIC_CONTEXT");
529 fReaderBDTPion->AddVariable(
"TrackStartGap", &TMVAvars[4]);
530 fReaderBDTPion->AddVariable(
"nGaps/ProjLength", &TMVAvars[5]);
531 fReaderBDTPion->AddVariable(
"ScatLL", &TMVAvars[1]);
532 fReaderBDTPion->AddVariable(
"DedxLL", &TMVAvars[0]);
533 fReaderBDTPion->AddVariable(
"Avededxlast10cm", &TMVAvars[2]);
534 fReaderBDTPion->AddVariable(
"Avededxlast40cm", &TMVAvars[3]);
535 fReaderBDTPion->BookMVA(
"BDTGPion", pidlib);
541 const char*
path =
getenv(
"SRT_PUBLIC_CONTEXT");
542 if(!fReaderBDTProton) fReaderBDTProton =
new TMVA::Reader(
"!Color:!Silent" );
544 fReaderBDTProton->AddVariable(
"TrackStartGap", &TMVAvars[4]);
545 fReaderBDTProton->AddVariable(
"ScatLL", &TMVAvars[1]);
546 fReaderBDTProton->AddVariable(
"DedxLL", &TMVAvars[0]);
547 fReaderBDTProton->AddVariable(
"Avededxlast10cm", &TMVAvars[2]);
548 fReaderBDTProton->AddVariable(
"Avededxlast40cm", &TMVAvars[3]);
549 fReaderBDTProton->AddVariable(
"nGaps/ProjLength", &TMVAvars[5]);
550 fReaderBDTProton->BookMVA(
"BDTGProton", pidlib1);
556 const char*
path =
getenv(
"SRT_PUBLIC_CONTEXT");
557 if(!fReaderBDTGamma) fReaderBDTGamma =
new TMVA::Reader(
"!Color:!Silent" );
559 fReaderBDTGamma->AddVariable(
"TrackStartGap", &TMVAvars[4]);
560 fReaderBDTGamma->AddVariable(
"ScatLL", &TMVAvars[1]);
561 fReaderBDTGamma->AddVariable(
"DedxLL", &TMVAvars[0]);
562 fReaderBDTGamma->AddVariable(
"Avededxlast10cm", &TMVAvars[2]);
563 fReaderBDTGamma->AddVariable(
"Avededxlast40cm", &TMVAvars[3]);
564 fReaderBDTGamma->AddVariable(
"nGaps/ProjLength", &TMVAvars[5]);
565 fReaderBDTGamma->BookMVA(
"BDTGGamma", pidlib2);
571 if(!fReaderBDTPion) fReaderBDTPion =
new TMVA::Reader(
"!Color:!Silent" );
572 const char*
path =
getenv(
"SRT_PUBLIC_CONTEXT");
574 fReaderBDTPion->AddVariable(
"TrackStartGap", &TMVAvars[4]);
575 fReaderBDTPion->AddVariable(
"nGaps/ProjLength", &TMVAvars[5]);
576 fReaderBDTPion->AddVariable(
"ScatLL", &TMVAvars[1]);
577 fReaderBDTPion->AddVariable(
"DedxLL", &TMVAvars[0]);
578 fReaderBDTPion->AddVariable(
"Avededxlast10cm", &TMVAvars[2]);
579 fReaderBDTPion->AddVariable(
"Avededxlast40cm", &TMVAvars[3]);
580 fReaderBDTPion->BookMVA(
"BDTGPion", pidlib);
586 const char*
path =
getenv(
"SRT_PUBLIC_CONTEXT");
587 if(!fReaderBDTProton) fReaderBDTProton =
new TMVA::Reader(
"!Color:!Silent" );
589 fReaderBDTProton->AddVariable(
"TrackStartGap", &TMVAvars[4]);
590 fReaderBDTProton->AddVariable(
"ScatLL", &TMVAvars[1]);
591 fReaderBDTProton->AddVariable(
"DedxLL", &TMVAvars[0]);
592 fReaderBDTProton->AddVariable(
"Avededxlast10cm", &TMVAvars[2]);
593 fReaderBDTProton->AddVariable(
"Avededxlast40cm", &TMVAvars[3]);
594 fReaderBDTProton->AddVariable(
"nGaps/ProjLength", &TMVAvars[5]);
595 fReaderBDTProton->BookMVA(
"BDTGProton", pidlib1);
600 const char*
path =
getenv(
"SRT_PUBLIC_CONTEXT");
601 if(!fReaderBDTGamma) fReaderBDTGamma =
new TMVA::Reader(
"!Color:!Silent" );
603 fReaderBDTGamma->AddVariable(
"TrackStartGap", &TMVAvars[4]);
604 fReaderBDTGamma->AddVariable(
"ScatLL", &TMVAvars[1]);
605 fReaderBDTGamma->AddVariable(
"DedxLL", &TMVAvars[0]);
606 fReaderBDTGamma->AddVariable(
"Avededxlast10cm", &TMVAvars[2]);
607 fReaderBDTGamma->AddVariable(
"Avededxlast40cm", &TMVAvars[3]);
608 fReaderBDTGamma->AddVariable(
"nGaps/ProjLength", &TMVAvars[5]);
609 fReaderBDTGamma->BookMVA(
"BDTGGamma", pidlib2);
615 if(!fReaderBDTPion) fReaderBDTPion =
new TMVA::Reader(
"!Color:!Silent" );
616 const char*
path =
getenv(
"SRT_PUBLIC_CONTEXT");
618 fReaderBDTPion->AddVariable(
"TrackStartGap", &TMVAvars[4]);
619 fReaderBDTPion->AddVariable(
"nGaps/ProjLength", &TMVAvars[5]);
620 fReaderBDTPion->AddVariable(
"ScatLL", &TMVAvars[1]);
621 fReaderBDTPion->AddVariable(
"DedxLL", &TMVAvars[0]);
622 fReaderBDTPion->AddVariable(
"Avededxlast10cm", &TMVAvars[2]);
623 fReaderBDTPion->AddVariable(
"Avededxlast40cm", &TMVAvars[3]);
624 fReaderBDTPion->BookMVA(
"BDTGPion", pidlib);
630 if(!fReaderBDTPion) fReaderBDTPion =
new TMVA::Reader(
"!Color:!Silent" );
631 const char*
path =
getenv(
"SRT_PUBLIC_CONTEXT");
633 fReaderBDTPion->AddVariable(
"TrackStartGap", &TMVAvars[4]);
634 fReaderBDTPion->AddVariable(
"nGaps/ProjLength", &TMVAvars[5]);
635 fReaderBDTPion->AddVariable(
"ScatLL", &TMVAvars[1]);
636 fReaderBDTPion->AddVariable(
"DedxLL", &TMVAvars[0]);
637 fReaderBDTPion->AddVariable(
"Avededxlast10cm", &TMVAvars[2]);
638 fReaderBDTPion->AddVariable(
"Avededxlast40cm", &TMVAvars[3]);
639 fReaderBDTPion->BookMVA(
"BDTGPion", pidlib);
645 if(!fReaderBDTPion) fReaderBDTPion =
new TMVA::Reader(
"!Color:!Silent" );
646 const char*
path =
getenv(
"SRT_PUBLIC_CONTEXT");
648 fReaderBDTPion->AddVariable(
"TrackStartGap", &TMVAvars[4]);
649 fReaderBDTPion->AddVariable(
"nGaps/ProjLength", &TMVAvars[5]);
650 fReaderBDTPion->AddVariable(
"ScatLL", &TMVAvars[1]);
651 fReaderBDTPion->AddVariable(
"DedxLL", &TMVAvars[0]);
652 fReaderBDTPion->AddVariable(
"Avededxlast10cm", &TMVAvars[2]);
653 fReaderBDTPion->AddVariable(
"Avededxlast40cm", &TMVAvars[3]);
654 fReaderBDTPion->BookMVA(
"BDTGPion", pidlib);
660 const char*
path =
getenv(
"SRT_PUBLIC_CONTEXT");
661 if(!fReaderBDTProton) fReaderBDTProton =
new TMVA::Reader(
"!Color:!Silent" );
663 fReaderBDTProton->AddVariable(
"TrackStartGap", &TMVAvars[4]);
664 fReaderBDTProton->AddVariable(
"ScatLL", &TMVAvars[1]);
665 fReaderBDTProton->AddVariable(
"DedxLL", &TMVAvars[0]);
666 fReaderBDTProton->AddVariable(
"Avededxlast10cm", &TMVAvars[2]);
667 fReaderBDTProton->AddVariable(
"Avededxlast40cm", &TMVAvars[3]);
668 fReaderBDTProton->AddVariable(
"nGaps/ProjLength", &TMVAvars[5]);
669 fReaderBDTProton->BookMVA(
"BDTGProton", pidlib1);
675 const char*
path =
getenv(
"SRT_PUBLIC_CONTEXT");
676 if(!fReaderBDTGamma) fReaderBDTGamma =
new TMVA::Reader(
"!Color:!Silent" );
678 fReaderBDTGamma->AddVariable(
"TrackStartGap", &TMVAvars[4]);
679 fReaderBDTGamma->AddVariable(
"ScatLL", &TMVAvars[1]);
680 fReaderBDTGamma->AddVariable(
"DedxLL", &TMVAvars[0]);
681 fReaderBDTGamma->AddVariable(
"Avededxlast10cm", &TMVAvars[2]);
682 fReaderBDTGamma->AddVariable(
"Avededxlast40cm", &TMVAvars[3]);
683 fReaderBDTGamma->AddVariable(
"nGaps/ProjLength", &TMVAvars[5]);
684 fReaderBDTGamma->BookMVA(
"BDTGGamma", pidlib2);
Near Detector underground.
float InitTMVAGamma() const
static TMVA::Reader * fReaderBDTGamma
Cuts and Vars for the 2020 FD DiF Study.
float InitTMVAPion() const
caf::Proxy< unsigned int > idxremid
caf::Proxy< size_t > ntracks
float InitTMVAPion() const
Proxy for caf::StandardRecord.
static TMVA::Reader * fReaderBDTProton
float operator()(float dedxll, float scatll, float avededxlast10cm, float avededxlast40cm, float trackstartgap, float gapdensity) const
float InitTMVAPion() const
caf::Proxy< caf::SRTrackBranch > trk
float InitTMVAProton() const
std::string getenv(std::string const &name)
float InitTMVAPion() const
float InitTMVAGamma() const
float operator()(const caf::SRProxy *sr) const
static TMVA::Reader * fReaderBDTPion
float operator()(const caf::SRProxy *sr) const
float InitTMVAGamma() const
float InitTMVAPion() const
caf::Proxy< caf::SRKalman > kalman
float operator()(const caf::SRProxy *sr) const
float InitTMVAProton() const
float operator()(float dedxll, float scatll, float avededxlast10cm, float avededxlast40cm, float trackstartgap, float gapdensity) const
TVector3 NuMIBeamDirection(caf::Det_t det)
Average direction of NuMI neutrinos in a given detector This function is a copy of geo::GeometryBase:...
float InitTMVAProton() const
caf::Proxy< std::vector< caf::SRKalmanTrack > > tracks
float operator()(float dedxll, float scatll, float avededxlast10cm, float avededxlast40cm, float trackstartgap, float gapdensity) const
float operator()(const caf::SRProxy *sr) const