90 fVertexX = tfs->
make<TH1F>(
"vertexXdiff",
";Reco - True Vertex X (cm)",80, -200, 200);
91 fVertexY = tfs->
make<TH1F>(
"vertexYdiff",
";Reco - True Vertex Y (cm)",80, -200, 200);
92 fVertexZ = tfs->
make<TH1F>(
"vertexZdiff",
";Reco - True Vertex Z (cm)",80, -200, 200);
106 for (
unsigned int i = 0;
i < sliceHandle->size(); ++
i ) {
119 std::vector<cheat::NeutrinoWithIndex> nus =
bt->
allMCTruth();
128 for (
unsigned int iSlice = 0; iSlice < slices.
size(); ++iSlice ){
132 unsigned int nCells = slice->
NCell();
134 mf::LogInfo(
"RecoValidationTutorial") <<
" Slice # " << iSlice
138 if ( slice->
IsNoise() )
continue;
144 if( !fmVert.isValid() )
continue;
146 const std::vector< art::Ptr<rb::Vertex> > vtx = fmVert.at(iSlice);
147 if ( vtx.size() != 1)
continue;
149 TVector3 vxyz = vtx[0]->GetXYZ();
150 mf::LogInfo(
"RecoValidationTutorial") <<
" It has Reco Vertex at " 160 if ( sliceNuId[iSlice] == -1 )
return;
back track the reconstruction to the simulation
unsigned int NCell(geo::View_t view) const
Number of cells in view view.
const simb::MCNeutrino & GetNeutrino() const
~RecoValidationTutorial()
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
const simb::MCParticle & Nu() const
std::vector< NeutrinoWithIndex > allMCTruth() const
art::ServiceHandle< cheat::BackTracker > bt
DEFINE_ART_MODULE(TestTMapFile)
std::vector< std::vector< cheat::NeutrinoEffPur > > SlicesToMCTruthsTable(const std::vector< const rb::Cluster * > &sliceList) const
Given ALL the slices in an event, including the noise slice, returns a vector of vector of structures...
std::string fCellHitLabel
module label for CellHit
std::vector< int > SliceToOrderedNuIds(const std::vector< cheat::NeutrinoWithIndex > &nusWithIdx, const std::vector< std::vector< cheat::NeutrinoEffPur >> &slTruthTable, std::function< double(const cheat::NeutrinoEffPur &)> slMetric, std::function< double(const cheat::NeutrinoEffPur &)> nuMetric) const
Given a vector of indexed neutrino interaction and a vector of slice truth tables, returns a vector of neutrino interaction indices ordered by best match to the corresponding slice. Here, best match is determined according to the given cheat::NeutrinoEffPur functions for the slice and the nu.
void push_back(Ptr< U > const &p)
std::string fClusterLabel
module label for clusters
T get(std::string const &key) const
void analyze(const art::Event &evt)
EDAnalyzer(Table< Config > const &config)
Vertex location in position and time.
RecoValidationTutorial(const fhicl::ParameterSet &p)
double Vx(const int i=0) const
T * make(ARGS...args) const
std::string fVertexLabel
module label for vertices
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const
double Vz(const int i=0) const
void reconfigure(const fhicl::ParameterSet &p)
double EffMetric(const cheat::NeutrinoEffPur &ep)
Function for NeutrinoEffPur's nu interaction to slice efficiency.
bool IsNoise() const
Is the noise flag set?
Event generator information.
double Vy(const int i=0) const