26 #include "Utilities/AssociationUtil.h" 106 fpid = tfs->
make<TH1F>(
"fpid",
";pid;NTracks",95,-0.1,1.1);
107 fpidnc = tfs->
make<TH1F>(
"fpidnc",
";pid;NTracks",95,-0.1,1.1);
108 fpidcc = tfs->
make<TH1F>(
"fpidcc",
";pid;NTracks",95,-0.1,1.1);
109 fpidcccut = tfs->
make<TH1F>(
"fpidcccut",
";pid;NTracks",95,-0.1,1.1);
110 fnscat = tfs->
make<TH1F>(
"fnscat",
";nscat;NTracks",301,-0.5,301);
111 fndedx = tfs->
make<TH1F>(
"fndedx",
";ndedx;NTracks",301,-0.5,301);
112 fcosscat = tfs->
make<TH1F>(
"fcosscat",
";cos #theta_{scat};",300,-1.1,1.1);
113 favgdedx = tfs->
make<TH1F>(
"favgdedx",
";average dE/dx (GeV/cm);NTracks",500,0.0,0.01);
114 fdedx = tfs->
make<TH1F>(
"fdedx",
";dE/dx (GeV/cm);",500,0.0,0.01);
115 fpidnchigh = tfs->
make<TH1F>(
"fpidnchigh",
";pid;NTracks",95,-0.1,1.1);
116 fpidcchigh = tfs->
make<TH1F>(
"fpidcchigh",
";pid;NTracks",95,-0.1,1.1);
117 fpidhigh = tfs->
make<TH1F>(
"fpidhigh",
";pid;NTracks",95,-0.1,1.1);
118 fnscathigh = tfs->
make<TH1F>(
"fnscathigh",
";nscat;NTracks",301,-0.5,301);
119 fndedxhigh = tfs->
make<TH1F>(
"fndedxhigh",
";ndedx;NTracks",301,-0.5,301);
120 fcosscathigh = tfs->
make<TH1F>(
"fcosscathigh",
";cos #theta_{scat};",300,-1.1,1.1);
121 favgdedxhigh = tfs->
make<TH1F>(
"favgdedxhigh",
";average dE/dx (GeV/cm);NTracks",500,0.0,0.01);
122 fdedxhigh = tfs->
make<TH1F>(
"fdedxhigh",
";dE/dx (GeV/cm);",500,0.0,0.01);
123 fpidmu = tfs->
make<TH1F>(
"fpidmu",
";pid;NTracks",95,-0.1,1.1);
124 fnscatmu = tfs->
make<TH1F>(
"fnscatmu",
";nscat;NTracks",301,-0.5,301);
125 fndedxmu = tfs->
make<TH1F>(
"fndedxmu",
";ndedx;NTracks",301,-0.5,301);
126 fcosscatmu = tfs->
make<TH1F>(
"fcosscatmu",
";cos #theta_{scat};",300,-1.1,1.1);
127 favgdedxmu = tfs->
make<TH1F>(
"favgdedxmu",
";average dE/dx (GeV/cm);NTracks",500,0.0,0.01);
128 fdedxmu = tfs->
make<TH1F>(
"fdedxmu",
";dE/dx (GeV/cm);",500,0.0,0.01);
129 fpidmucont = tfs->
make<TH1F>(
"fpidmucont",
";pid;NTracks",95,-0.1,1.1);
130 fnscatmucont = tfs->
make<TH1F>(
"fnscatmucont",
";nscat;NTracks",301,-0.5,301);
131 fndedxmucont = tfs->
make<TH1F>(
"fndedxmucont",
";ndedx;NTracks",301,-0.5,301);
132 fcosscatmucont = tfs->
make<TH1F>(
"fcosscatmucont",
";cos #theta_{scat};",300,-1.1,1.1);
133 favgdedxmucont = tfs->
make<TH1F>(
"favgdedxmucont",
";average dE/dx (GeV/cm);NTracks",500,0.0,0.01);
134 fdedxmucont = tfs->
make<TH1F>(
"fdedxmucont",
";dE/dx (GeV/cm);",500,0.0,0.01);
152 for(
unsigned int i = 0;
i<slicecol->size();++
i){
155 for(
unsigned int ihit = 0; ihit<slice->
NCell();++ihit){
166 unsigned int mostEffSlice = 0;
169 for(
unsigned int iSlice = 0;iSlice<slicelist.
size();++iSlice){
172 if(nuint.size()>0 && nuint[0].efficiency>bestEff){
173 bestEff = nuint[0].efficiency;
174 mostEffSlice = iSlice;
180 else if(nu.
Mode() == 0){intType = 0;}
181 else if(nu.
Mode() == 1){intType = 1;}
182 else if(nu.
Mode() == 2){intType = 2;}
183 else if(nu.
Mode() == 3){intType = 3;}
189 for(
unsigned int iSlice = 0; iSlice<slicelist.
size(); ++iSlice){
190 if(intType <0){
continue; }
191 if(mostEffSlice != iSlice){
continue; }
193 std::vector<art::Ptr<rb::Track> > tracks = fndmnytrk.at(iSlice);
194 if(tracks.size() == 0){
continue; }
196 double bestpid = -1.0;
202 for(std::set<int>::iterator
it= trackIDs.begin();
it != trackIDs.end(); ++
it){
213 double bestmueff = -1.0;
215 for(
unsigned int itrack = 0; itrack < tracks.size(); ++itrack){
234 for(
unsigned int i = 0;
i<pidobj->
NDedx(); ++
i){
237 if(pidobj->
Value() > bestpid){
239 bestpid = pidobj->
Value();
245 if(bestInd <0){
continue; }
256 for(
unsigned int i = 0;
i<pidobj->
NDedx(); ++
i){
262 if(intType >3){
continue; }
263 if(muInd < 0){
continue; }
272 for(
unsigned int i = 0;
i<mupidobj->
NDedx(); ++
i){
284 for(
unsigned int i = 0;
i<mupidobj->
NDedx(); ++
i){
292 if(intType != 0){
continue; }
378 TVector3 stop = track->
Stop();
379 if(start.X() > xmin+100.00 && start.X() < xmax-100.00 && start.Y() > ymin+100.00 && start.Y() < ymax-100.00 && start.Z() > zmin+100.00 && start.Z() < zmax-100.00 &&
380 stop.X() > xmin && stop.X() < xmax && stop.Y() > ymin && stop.Y() < ymax && stop.Z() > zmin && stop.Z() <
zmax){
return true; }
381 else{
return false; }
back track the reconstruction to the simulation
double Dedx(unsigned int i) const
unsigned int NCell(geo::View_t view) const
Number of cells in view view.
unsigned int NScatters() const
std::map< std::string, double > xmax
std::vector< NeutrinoEffPur > SliceToNeutrinoInteractions(const std::vector< const rb::CellHit * > &sliceHits, const std::vector< const rb::CellHit * > &allHits, bool sortPur=false) const
Given a collection of hits (often a slice), returns vector of structures of neutrino interactions...
std::string fTrackLabel
Where to find recondtructed tracks.
const simb::MCParticle & Nu() const
std::string fPidLabel
Where to find the pids.
static bool SortByHits(const art::Ptr< rb::Track > &a, const art::Ptr< rb::Track > &b)
DEFINE_ART_MODULE(TestTMapFile)
virtual TVector3 Start() const
double HitCollectionEfficiency(const std::set< int > &trackIDs, const std::vector< rb::WeightedHit > &whits, const std::vector< const rb::CellHit * > &allhits, const geo::View_t &view, std::map< int, double > *effMap=0, bool energyEff=false, double *desiredEnergy=0, double *totalEnergy=0, int *desiredHits=0, int *totalHits=0) const
Returns the fraction of all energy in an event from a specific set of Geant4 track IDs that are repre...
void push_back(Ptr< U > const &p)
A module to analyze remid objects produced by the RecoMuon module.
T get(std::string const &key) const
double CosScat(unsigned int i) const
ReMIdValidate(fhicl::ParameterSet const &pset)
EDAnalyzer(Table< Config > const &config)
const sim::Particle * TrackIDToParticle(int const &id) const
Returns a pointer to the sim::Particle object corresponding to the given TrackID. ...
unsigned int NDedx() const
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
TH1F * fpid
Pid value of every track.
void analyze(art::Event const &evt)
T * make(ARGS...args) const
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const
std::string fSliceLabel
Where to find reconstructed slices.
const std::set< int > GetTrackIDList() const
Get all G4 track ids present in the event.
bool IsContained(art::Ptr< rb::Track > track)
Function to determine whether or not a track is contained.
TVector3 Stop() const
Position of the final trajectory point.
Event generator information.