Classes | Typedefs | Enumerations | Functions
cvn Namespace Reference

Defines an enumeration for prong classification. More...

Classes

class  Boundary
 
class  CVNAddTrainingData
 
class  CVNCosmicEventDump
 
class  CVNCosmicMapper
 
class  CVNEventDump
 
class  CVNEventProngDump
 
class  CVNMapper
 
class  EventLabeledPMaps
 The EventLabeledPMaps objects contains a PixelMap and the output class type, and any other bit that goes into the ANN. More...
 
class  Features
 Features, basic output of CVN neural net. More...
 
class  ParticlesTrainingData
 The TrainingData objects contains a PixelMap and the output class type, and any other bit that goes into the ANN. More...
 
class  PixelMap
 PixelMap, basic input to CVN neural net. More...
 
class  PixelMapProducer
 Producer algorithm for PixelMap, input to CVN neural net. More...
 
class  ProngSummary
 
class  ProngTrainingData
 The TrainingData objects contains a PixelMap and the output class type, and any other bit that goes into the ANN. More...
 
class  RegCVNImageUtils
 Class containing some utility functions for all things RegCVN. More...
 
class  RegCVNMapper
 
class  RegHadronResult
 Hadronic energy output from RegHadCVN. More...
 
class  RegNuResult
 Neutrino energy output from RegCVN. More...
 
class  RegPixelMap
 RegPixelMap, basic input to CVN neural net. More...
 
class  RegPixelMapProducer
 Producer algorithm for RegPixelMap, input to CVN neural net. More...
 
class  RegProngResult
 Electron energy output from RegCVN. More...
 
class  RegResult
 Result, basic output of Regression CVN neural net. More...
 
class  Result
 Result, basic output of CVN neural net. More...
 
class  Results
 Result, basic output of Regression CVN neural net. More...
 
class  TrainingData
 The TrainingData objects contains a PixelMap and the output class type, and any other bit that goes into the ANN. More...
 

Typedefs

typedef enum cvn::FinalStateProngs FinalStateProngsType
 
typedef enum cvn::FinalState FinalStateType
 
typedef enum cvn::HType HitType
 
typedef enum cvn::Interaction InteractionType
 
typedef enum cvn::ParentParticle ParentParticleType
 
typedef enum cvn::Particles ParticlesType
 
typedef enum cvn::PType ProngType
 
typedef std::vector< std::vector< float > > ViewVectorF
 Useful typedefs. More...
 
typedef std::vector< ViewVectorFImageVectorF
 
typedef enum cvn::SimpleNeutrino SimpleNeutrinoType
 

Enumerations

enum  FinalStateProngs {
  kNumu1prong, kNumu2prong, kNumu3prong, kNumuMprong,
  kNue1prong, kNue2prong, kNue3prong, kNueMprong,
  kNC1prong, kNC2prong, kNC3prong, kNCMprong,
  kCosmicFSp, kOtherFSp, kNFSpType
}
 
enum  FinalState {
  kNumu0tr0sh, kNumu0tr1sh, kNumu0tr2sh, kNumu0trMsh,
  kNumu1tr0sh, kNumu1tr1sh, kNumu1tr2sh, kNumu1trMsh,
  kNumu2tr0sh, kNumu2tr1sh, kNumu2tr2sh, kNumu2trMsh,
  kNumuMtr0sh, kNumuMtr1sh, kNumuMtr2sh, kNumuMtrMsh,
  kNue0tr0sh, kNue0tr1sh, kNue0tr2sh, kNue0trMsh,
  kNue1tr0sh, kNue1tr1sh, kNue1tr2sh, kNue1trMsh,
  kNue2tr0sh, kNue2tr1sh, kNue2tr2sh, kNue2trMsh,
  kNueMtr0sh, kNueMtr1sh, kNueMtr2sh, kNueMtrMsh,
  kNC0tr0sh, kNC0tr1sh, kNC0tr2sh, kNC0trMsh,
  kNC1tr0sh, kNC1tr1sh, kNC1tr2sh, kNC1trMsh,
  kNC2tr0sh, kNC2tr1sh, kNC2tr2sh, kNC2trMsh,
  kNCMtr0sh, kNCMtr1sh, kNCMtr2sh, kNCMtrMsh,
  kCosmicFS, kOtherFS, kNFStType
}
 
enum  HType {
  kEmptyHit, kElectronHit, kMuonHit, kProtonHit,
  kNeutronHit, kPionHit, kPiZeroHit, kGammaHit,
  kMostlyHA, kMostlyEM, kMostlyMU, kUnknownHit
}
 
enum  Interaction {
  kNumuQE, kNumuRes, kNumuDIS, kNumuOther,
  kNueQE, kNueRes, kNueDIS, kNueOther,
  kNutauQE, kNutauRes, kNutauDIS, kNutauOther,
  kNuElectronElastic, kNC, kCosmic, kOther,
  kNIntType
}
 
enum  ParentParticle {
  kPiNuCCPP, kKaNuCCPP, kMuNuCCPP, kPiNuNCPP,
  kKaNuNCPP, kMuNuNCPP, kCosmicPP, kOtherPP,
  kUnknownPP, kNPPtType
}
 
enum  Particles {
  nE_e_1_mu_0_pi0_0_pi_0_n_0_p_1, nM_e_0_mu_1_pi0_0_pi_0_n_0_p_1, nM_e_0_mu_1_pi0_0_pi_1_n_0_p_1, nU_e_0_mu_0_pi0_1_pi_0_n_0_p_1,
  nE_e_1_mu_0_pi0_0_pi_1_n_0_p_1, nE_e_1_mu_0_pi0_0_pi_0_n_2_p_2, nU_e_0_mu_0_pi0_0_pi_1_n_0_p_1, nE_e_1_mu_0_pi0_0_pi_1_n_1_p_0,
  nM_e_0_mu_1_pi0_0_pi_1_n_1_p_0, nU_e_0_mu_0_pi0_0_pi_1_n_1_p_0, nU_e_0_mu_0_pi0_1_pi_0_n_1_p_0, nM_e_0_mu_1_pi0_0_pi_0_n_2_p_2,
  nU_e_0_mu_0_pi0_1_pi_0_n_1_p_1, nM_e_0_mu_1_pi0_0_pi_0_n_1_p_1, nE_e_1_mu_0_pi0_0_pi_0_n_1_p_1, nU_e_0_mu_0_pi0_1_pi_0_n_2_p_2,
  nE_e_1_mu_0_pi0_0_pi_0_n_1_p_2, nE_e_1_mu_0_pi0_0_pi_1_n_2_p_2, nM_e_0_mu_1_pi0_0_pi_1_n_1_p_1, nE_e_1_mu_0_pi0_0_pi_0_n_0_p_2,
  nU_e_0_mu_0_pi0_0_pi_2_n_0_p_1, nM_e_0_mu_1_pi0_0_pi_0_n_1_p_2, nU_e_0_mu_0_pi0_0_pi_0_n_2_p_2, nM_e_0_mu_1_pi0_0_pi_0_n_0_p_2,
  nE_e_1_mu_0_pi0_1_pi_0_n_0_p_1, nE_e_1_mu_0_pi0_0_pi_1_n_1_p_1, nU_e_0_mu_0_pi0_1_pi_1_n_1_p_0, nU_e_0_mu_0_pi0_0_pi_1_n_1_p_1,
  nM_e_0_mu_1_pi0_1_pi_0_n_0_p_1, nU_e_0_mu_0_pi0_0_pi_2_n_1_p_0, nU_e_0_mu_0_pi0_0_pi_1_n_2_p_2, nE_e_1_mu_0_pi0_1_pi_1_n_0_p_1,
  nU_e_0_mu_0_pi0_1_pi_2_n_0_p_1, nM_e_0_mu_1_pi0_0_pi_1_n_2_p_2, nE_e_1_mu_0_pi0_0_pi_2_n_0_p_1, nU_e_0_mu_0_pi0_1_pi_2_n_2_p_2,
  nU_e_0_mu_0_pi0_1_pi_2_n_1_p_0, nU_e_0_mu_0_pi0_1_pi_1_n_0_p_1, nU_e_0_mu_0_pi0_2_pi_2_n_0_p_1, nU_e_0_mu_0_pi0_0_pi_0_n_0_p_1,
  nU_e_0_mu_0_pi0_0_pi_2_n_2_p_2, nU_e_0_mu_0_pi0_0_pi_2_n_1_p_1, nM_e_0_mu_1_pi0_0_pi_1_n_0_p_2, nU_e_0_mu_0_pi0_1_pi_0_n_0_p_0,
  nE_e_1_mu_0_pi0_0_pi_1_n_0_p_2, nU_e_0_mu_0_pi0_0_pi_1_n_0_p_2, nT_e_0_mu_0_pi0_0_pi_2_n_0_p_1, nU_e_0_mu_0_pi0_1_pi_0_n_2_p_0,
  nU_e_0_mu_0_pi0_0_pi_1_n_2_p_0, nM_e_0_mu_1_pi0_1_pi_1_n_0_p_1, nE_e_1_mu_0_pi0_1_pi_2_n_0_p_1, nU_e_0_mu_0_pi0_2_pi_2_n_1_p_0,
  nM_e_0_mu_1_pi0_0_pi_1_n_2_p_1, nU_e_0_mu_0_pi0_1_pi_0_n_0_p_2, nU_e_0_mu_0_pi0_0_pi_1_n_2_p_1, nM_e_0_mu_1_pi0_1_pi_2_n_0_p_1,
  nM_e_0_mu_1_pi0_0_pi_2_n_1_p_0, nE_e_1_mu_0_pi0_0_pi_2_n_1_p_0, nU_e_0_mu_0_pi0_0_pi_0_n_1_p_0, nM_e_0_mu_1_pi0_0_pi_2_n_0_p_1,
  nM_e_0_mu_1_pi0_0_pi_1_n_1_p_2, nU_e_0_mu_0_pi0_2_pi_0_n_0_p_1, nU_e_0_mu_0_pi0_1_pi_1_n_2_p_2, nU_e_0_mu_0_pi0_1_pi_0_n_2_p_1,
  nU_e_0_mu_0_pi0_0_pi_1_n_1_p_2, nE_e_1_mu_0_pi0_1_pi_2_n_1_p_0, nE_e_1_mu_0_pi0_0_pi_0_n_2_p_1, nT_e_0_mu_0_pi0_0_pi_2_n_1_p_0,
  nM_e_0_mu_1_pi0_1_pi_0_n_0_p_2, nE_e_1_mu_0_pi0_0_pi_1_n_2_p_1, nU_e_0_mu_0_pi0_2_pi_2_n_1_p_1, nM_e_0_mu_1_pi0_1_pi_1_n_1_p_0,
  nM_e_0_mu_1_pi0_0_pi_2_n_1_p_1, nU_e_0_mu_0_pi0_0_pi_0_n_2_p_1, nM_e_0_mu_1_pi0_1_pi_0_n_2_p_2, nE_e_1_mu_0_pi0_0_pi_2_n_1_p_1,
  nU_e_0_mu_0_pi0_2_pi_2_n_2_p_2, nT_e_0_mu_0_pi0_2_pi_2_n_0_p_1, nM_e_0_mu_1_pi0_1_pi_1_n_1_p_1, nU_e_0_mu_0_pi0_1_pi_2_n_1_p_1,
  nU_e_0_mu_0_pi0_0_pi_2_n_2_p_1, nU_e_0_mu_0_pi0_0_pi_2_n_0_p_2, nM_e_0_mu_1_pi0_0_pi_0_n_2_p_1, nE_e_1_mu_0_pi0_1_pi_0_n_1_p_1,
  nM_e_0_mu_1_pi0_1_pi_0_n_1_p_1, nE_e_1_mu_0_pi0_1_pi_1_n_1_p_0, nE_e_1_mu_0_pi0_0_pi_2_n_2_p_2, nU_e_0_mu_0_pi0_1_pi_1_n_1_p_1,
  nE_e_1_mu_0_pi0_2_pi_2_n_2_p_2, nE_e_1_mu_0_pi0_2_pi_2_n_0_p_1, nE_e_1_mu_0_pi0_1_pi_1_n_1_p_1, nU_e_0_mu_0_pi0_1_pi_1_n_2_p_0,
  nU_e_0_mu_0_pi0_1_pi_1_n_1_p_2, nU_e_0_mu_0_pi0_0_pi_2_n_1_p_2, nU_e_0_mu_0_pi0_0_pi_0_n_1_p_2, nT_e_0_mu_0_pi0_2_pi_2_n_2_p_2,
  nT_e_0_mu_0_pi0_2_pi_2_n_1_p_0, nT_e_0_mu_0_pi0_1_pi_2_n_0_p_1, nM_e_0_mu_1_pi0_1_pi_2_n_1_p_0, nE_e_1_mu_0_pi0_1_pi_0_n_0_p_2,
  nM_e_0_mu_1_pi0_1_pi_2_n_1_p_1, nM_e_0_mu_1_pi0_0_pi_1_n_2_p_0, nU_e_0_mu_0_pi0_1_pi_2_n_2_p_0, nU_e_0_mu_0_pi0_0_pi_0_n_0_p_0,
  nT_e_0_mu_0_pi0_1_pi_2_n_1_p_0, nM_e_0_mu_1_pi0_2_pi_2_n_0_p_1, nE_e_1_mu_0_pi0_0_pi_2_n_1_p_2, nE_e_1_mu_0_pi0_0_pi_1_n_0_p_0,
  nU_e_0_mu_0_pi0_2_pi_1_n_2_p_2, nU_e_0_mu_0_pi0_2_pi_1_n_0_p_1, nT_e_0_mu_0_pi0_0_pi_2_n_1_p_1, nM_e_0_mu_1_pi0_0_pi_2_n_0_p_2,
  nE_e_1_mu_0_pi0_2_pi_2_n_1_p_0, nE_e_1_mu_0_pi0_0_pi_1_n_1_p_2, nU_e_0_mu_0_pi0_2_pi_0_n_2_p_2, nU_e_0_mu_0_pi0_0_pi_2_n_2_p_0,
  nU_e_0_mu_0_pi0_0_pi_0_n_1_p_1, nM_e_0_mu_1_pi0_1_pi_2_n_0_p_2, nM_e_0_mu_1_pi0_0_pi_1_n_0_p_0, nE_e_1_mu_0_pi0_1_pi_0_n_2_p_2,
  nU_e_0_mu_0_pi0_2_pi_2_n_0_p_2, nU_e_0_mu_0_pi0_1_pi_1_n_0_p_2, nM_e_0_mu_1_pi0_1_pi_2_n_2_p_0, nM_e_0_mu_1_pi0_0_pi_2_n_2_p_2,
  nE_e_1_mu_0_pi0_0_pi_1_n_2_p_0, nU_e_0_mu_0_pi0_2_pi_0_n_1_p_1, nM_e_0_mu_1_pi0_2_pi_2_n_2_p_2, nE_e_1_mu_0_pi0_1_pi_2_n_2_p_2,
  nE_e_1_mu_0_pi0_1_pi_2_n_2_p_1, nE_e_1_mu_0_pi0_0_pi_0_n_1_p_0, nU_e_0_mu_0_pi0_2_pi_2_n_2_p_0, nU_e_0_mu_0_pi0_2_pi_0_n_1_p_0,
  nU_e_0_mu_0_pi0_1_pi_2_n_2_p_1, nU_e_0_mu_0_pi0_1_pi_2_n_1_p_2, nU_e_0_mu_0_pi0_1_pi_1_n_2_p_1, nU_e_0_mu_0_pi0_0_pi_0_n_2_p_0,
  nT_e_0_mu_0_pi0_0_pi_1_n_0_p_1, nM_e_0_mu_1_pi0_1_pi_2_n_2_p_2, nM_e_0_mu_1_pi0_0_pi_0_n_1_p_0, nE_e_1_mu_0_pi0_2_pi_1_n_0_p_1,
  nE_e_1_mu_0_pi0_1_pi_1_n_2_p_2, nE_e_1_mu_0_pi0_1_pi_0_n_1_p_2, nU_e_0_mu_0_pi0_1_pi_0_n_1_p_2, nU_e_0_mu_0_pi0_0_pi_2_n_0_p_0,
  nT_e_0_mu_0_pi0_1_pi_2_n_2_p_2, nT_e_0_mu_0_pi0_0_pi_2_n_2_p_2, nM_e_0_mu_1_pi0_2_pi_2_n_1_p_0, nM_e_0_mu_1_pi0_1_pi_1_n_0_p_2,
  nM_e_0_mu_1_pi0_1_pi_0_n_1_p_2, nE_e_1_mu_0_pi0_1_pi_2_n_1_p_2, nE_e_1_mu_0_pi0_1_pi_1_n_0_p_2, nU_e_0_mu_0_pi0_2_pi_1_n_1_p_0,
  nT_e_0_mu_1_pi0_0_pi_0_n_0_p_1, nM_e_0_mu_1_pi0_2_pi_2_n_1_p_1, nM_e_0_mu_1_pi0_2_pi_1_n_0_p_1, nM_e_0_mu_1_pi0_1_pi_1_n_2_p_2,
  nM_e_0_mu_1_pi0_1_pi_1_n_1_p_2, nM_e_0_mu_1_pi0_0_pi_2_n_2_p_1, nE_e_1_mu_0_pi0_2_pi_1_n_2_p_2, nE_e_1_mu_0_pi0_0_pi_2_n_0_p_2,
  nE_e_1_mu_0_pi0_0_pi_0_n_0_p_0, nU_e_0_mu_0_pi0_2_pi_2_n_2_p_1, nU_e_0_mu_0_pi0_2_pi_2_n_1_p_2, nU_e_0_mu_0_pi0_2_pi_1_n_2_p_1,
  nU_e_0_mu_0_pi0_2_pi_0_n_1_p_2, nU_e_0_mu_0_pi0_1_pi_2_n_0_p_2, nU_e_0_mu_0_pi0_0_pi_0_n_0_p_2, nM_e_0_mu_1_pi0_2_pi_0_n_0_p_1,
  nE_e_1_mu_0_pi0_2_pi_2_n_1_p_1, nE_e_1_mu_0_pi0_2_pi_0_n_0_p_1, nE_e_1_mu_0_pi0_1_pi_1_n_2_p_1, nT_e_0_mu_1_pi0_0_pi_1_n_0_p_1,
  nM_e_0_mu_1_pi0_2_pi_0_n_0_p_2, nM_e_0_mu_1_pi0_0_pi_2_n_2_p_0, nM_e_0_mu_1_pi0_0_pi_2_n_1_p_2, nE_e_1_mu_0_pi0_2_pi_2_n_2_p_1,
  nE_e_1_mu_0_pi0_2_pi_2_n_0_p_2, nE_e_1_mu_0_pi0_1_pi_2_n_0_p_2, nE_e_1_mu_0_pi0_1_pi_1_n_1_p_2, nT_e_0_mu_0_pi0_1_pi_1_n_0_p_1,
  nT_e_0_mu_0_pi0_0_pi_2_n_0_p_2, nM_e_0_mu_1_pi0_1_pi_2_n_2_p_1, nE_e_1_mu_0_pi0_2_pi_0_n_0_p_2, nE_e_1_mu_0_pi0_1_pi_0_n_2_p_1,
  nE_e_1_mu_0_pi0_0_pi_2_n_2_p_0, nE_e_1_mu_0_pi0_0_pi_0_n_2_p_0, nU_e_0_mu_0_pi0_2_pi_1_n_1_p_1, nT_e_0_mu_1_pi0_0_pi_1_n_1_p_0,
  nT_e_0_mu_0_pi0_0_pi_2_n_2_p_0, nM_e_0_mu_1_pi0_1_pi_2_n_1_p_2, nE_e_1_mu_0_pi0_2_pi_2_n_1_p_2, nE_e_1_mu_0_pi0_2_pi_1_n_1_p_0,
  nU_e_0_mu_0_pi0_2_pi_0_n_2_p_1, nU_e_0_mu_0_pi0_1_pi_2_n_0_p_0, nT_e_1_mu_0_pi0_0_pi_1_n_1_p_0, nT_e_1_mu_0_pi0_0_pi_1_n_0_p_1,
  nT_e_0_mu_0_pi0_2_pi_2_n_0_p_2, nT_e_0_mu_0_pi0_2_pi_1_n_0_p_1, nT_e_0_mu_0_pi0_1_pi_2_n_1_p_1, nM_e_0_mu_1_pi0_2_pi_2_n_0_p_2,
  nM_e_0_mu_1_pi0_2_pi_1_n_1_p_0, nE_e_1_mu_0_pi0_1_pi_2_n_1_p_1, nE_e_1_mu_0_pi0_0_pi_2_n_0_p_0, nU_e_0_mu_0_pi0_2_pi_1_n_2_p_0,
  nU_e_0_mu_0_pi0_2_pi_1_n_0_p_2, nU_e_0_mu_0_pi0_2_pi_0_n_2_p_0, nT_e_1_mu_0_pi0_1_pi_2_n_1_p_0, nT_e_1_mu_0_pi0_1_pi_2_n_0_p_1,
  nT_e_1_mu_0_pi0_0_pi_0_n_0_p_1, nT_e_0_mu_1_pi0_0_pi_2_n_2_p_2, nT_e_0_mu_1_pi0_0_pi_2_n_0_p_1, nT_e_0_mu_0_pi0_2_pi_2_n_1_p_1,
  nT_e_0_mu_0_pi0_1_pi_2_n_2_p_1, nT_e_0_mu_0_pi0_1_pi_2_n_1_p_2, nT_e_0_mu_0_pi0_0_pi_2_n_1_p_2, nT_e_0_mu_0_pi0_0_pi_2_n_0_p_0,
  nT_e_0_mu_0_pi0_0_pi_1_n_2_p_2, nM_e_0_mu_1_pi0_2_pi_1_n_0_p_2, nM_e_0_mu_1_pi0_1_pi_1_n_2_p_1, nM_e_0_mu_1_pi0_1_pi_1_n_2_p_0,
  nM_e_0_mu_1_pi0_1_pi_0_n_1_p_0, nM_e_0_mu_1_pi0_0_pi_2_n_0_p_0, nE_e_1_mu_0_pi0_2_pi_1_n_1_p_2, nE_e_1_mu_0_pi0_2_pi_1_n_1_p_1,
  nE_e_1_mu_0_pi0_2_pi_1_n_0_p_2, nE_e_1_mu_0_pi0_2_pi_0_n_1_p_1, nE_e_1_mu_0_pi0_0_pi_2_n_2_p_1, nU_e_0_mu_0_pi0_2_pi_2_n_0_p_0,
  nT_e_1_mu_0_pi0_0_pi_2_n_0_p_1, nT_e_1_mu_0_pi0_0_pi_0_n_1_p_1, nT_e_0_mu_0_pi0_2_pi_2_n_0_p_0, nM_e_0_mu_1_pi0_2_pi_2_n_2_p_0,
  nM_e_0_mu_1_pi0_2_pi_1_n_2_p_2, nM_e_0_mu_1_pi0_2_pi_1_n_1_p_2, nM_e_0_mu_1_pi0_2_pi_1_n_1_p_1, nM_e_0_mu_1_pi0_2_pi_0_n_2_p_2,
  nM_e_0_mu_1_pi0_2_pi_0_n_1_p_2, nE_e_1_mu_0_pi0_2_pi_2_n_2_p_0, nE_e_1_mu_0_pi0_2_pi_0_n_2_p_2, nE_e_1_mu_0_pi0_2_pi_0_n_2_p_1,
  nE_e_1_mu_0_pi0_2_pi_0_n_1_p_2, nE_e_1_mu_0_pi0_1_pi_2_n_2_p_0, nU_e_0_mu_0_pi0_2_pi_1_n_1_p_2, nU_e_0_mu_0_pi0_1_pi_1_n_0_p_0,
  nU_e_0_mu_0_pi0_0_pi_1_n_0_p_0, nT_e_1_mu_0_pi0_1_pi_2_n_1_p_2, nT_e_1_mu_0_pi0_0_pi_2_n_2_p_0, nT_e_1_mu_0_pi0_0_pi_1_n_2_p_2,
  nT_e_0_mu_1_pi0_2_pi_2_n_1_p_0, nT_e_0_mu_1_pi0_2_pi_2_n_0_p_1, nT_e_0_mu_1_pi0_1_pi_2_n_0_p_1, nT_e_0_mu_1_pi0_1_pi_0_n_0_p_1,
  nT_e_0_mu_1_pi0_0_pi_2_n_1_p_0, nT_e_0_mu_1_pi0_0_pi_2_n_0_p_2, nT_e_0_mu_1_pi0_0_pi_0_n_2_p_2, nT_e_0_mu_1_pi0_0_pi_0_n_0_p_2,
  nT_e_0_mu_0_pi0_2_pi_2_n_2_p_0, nT_e_0_mu_0_pi0_2_pi_2_n_1_p_2, nT_e_0_mu_0_pi0_2_pi_1_n_0_p_2, nT_e_0_mu_0_pi0_1_pi_2_n_0_p_2,
  nT_e_0_mu_0_pi0_1_pi_1_n_1_p_2, nT_e_0_mu_0_pi0_1_pi_1_n_1_p_1, nT_e_0_mu_0_pi0_1_pi_1_n_0_p_2, nT_e_0_mu_0_pi0_0_pi_1_n_1_p_2,
  nT_e_0_mu_0_pi0_0_pi_1_n_0_p_0, nM_e_0_mu_1_pi0_2_pi_2_n_2_p_1, nM_e_0_mu_1_pi0_2_pi_2_n_1_p_2, nM_e_0_mu_1_pi0_2_pi_0_n_1_p_1,
  nM_e_0_mu_1_pi0_1_pi_0_n_2_p_1, nM_e_0_mu_1_pi0_1_pi_0_n_0_p_0, nM_e_0_mu_1_pi0_0_pi_0_n_0_p_0, nE_e_1_mu_0_pi0_1_pi_2_n_0_p_0,
  nU_e_0_mu_0_pi0_2_pi_0_n_0_p_2, nT_e_1_mu_0_pi0_1_pi_0_n_0_p_1, nT_e_1_mu_0_pi0_0_pi_0_n_0_p_0, nT_e_0_mu_1_pi0_1_pi_2_n_2_p_2,
  nT_e_0_mu_1_pi0_1_pi_1_n_1_p_0, nT_e_0_mu_0_pi0_2_pi_2_n_2_p_1, nT_e_0_mu_0_pi0_1_pi_1_n_2_p_2, nT_e_0_mu_0_pi0_1_pi_1_n_1_p_0,
  nT_e_0_mu_0_pi0_0_pi_1_n_1_p_1, nT_e_0_mu_0_pi0_0_pi_1_n_0_p_2, nM_e_0_mu_1_pi0_2_pi_1_n_2_p_1, nM_e_0_mu_1_pi0_2_pi_1_n_2_p_0,
  nM_e_0_mu_1_pi0_1_pi_2_n_0_p_0, nM_e_0_mu_1_pi0_0_pi_0_n_2_p_0, nE_e_1_mu_0_pi0_2_pi_1_n_2_p_1, nE_e_1_mu_0_pi0_1_pi_1_n_2_p_0,
  nE_e_1_mu_0_pi0_1_pi_1_n_0_p_0, nE_e_1_mu_0_pi0_1_pi_0_n_0_p_0, nU_e_1_mu_0_pi0_0_pi_2_n_1_p_1, nU_e_0_mu_0_pi0_2_pi_1_n_0_p_0,
  nT_e_1_mu_0_pi0_2_pi_2_n_1_p_1, nT_e_1_mu_0_pi0_2_pi_2_n_1_p_0, nT_e_1_mu_0_pi0_2_pi_2_n_0_p_1, nT_e_1_mu_0_pi0_2_pi_1_n_1_p_1,
  nT_e_1_mu_0_pi0_1_pi_2_n_1_p_1, nT_e_1_mu_0_pi0_1_pi_2_n_0_p_2, nT_e_1_mu_0_pi0_1_pi_1_n_1_p_1, nT_e_1_mu_0_pi0_1_pi_1_n_0_p_1,
  nT_e_1_mu_0_pi0_0_pi_0_n_2_p_2, nT_e_0_mu_1_pi0_2_pi_2_n_2_p_2, nT_e_0_mu_1_pi0_2_pi_2_n_2_p_1, nT_e_0_mu_1_pi0_2_pi_0_n_1_p_2,
  nT_e_0_mu_1_pi0_1_pi_2_n_1_p_1, nT_e_0_mu_1_pi0_1_pi_2_n_1_p_0, nT_e_0_mu_1_pi0_1_pi_0_n_2_p_2, nT_e_0_mu_1_pi0_1_pi_0_n_2_p_1,
  nT_e_0_mu_1_pi0_0_pi_2_n_1_p_1, nT_e_0_mu_1_pi0_0_pi_1_n_2_p_2, nT_e_0_mu_1_pi0_0_pi_1_n_2_p_0, nT_e_0_mu_1_pi0_0_pi_1_n_1_p_2,
  nT_e_0_mu_1_pi0_0_pi_1_n_1_p_1, nT_e_0_mu_1_pi0_0_pi_0_n_1_p_1, nT_e_0_mu_0_pi0_2_pi_1_n_2_p_2, nT_e_0_mu_0_pi0_1_pi_2_n_2_p_0,
  nT_e_0_mu_0_pi0_1_pi_2_n_0_p_0, nT_e_0_mu_0_pi0_1_pi_1_n_2_p_0, nT_e_0_mu_0_pi0_0_pi_2_n_2_p_1, nT_e_0_mu_0_pi0_0_pi_1_n_2_p_1,
  nT_e_0_mu_0_pi0_0_pi_1_n_2_p_0, nT_e_0_mu_0_pi0_0_pi_1_n_1_p_0, nM_e_1_mu_1_pi0_0_pi_1_n_0_p_1, nM_e_0_mu_1_pi0_1_pi_1_n_0_p_0,
  nE_e_1_mu_0_pi0_2_pi_1_n_0_p_0, nU_e_1_mu_0_pi0_0_pi_0_n_0_p_0, nT_e_1_mu_0_pi0_2_pi_2_n_2_p_2, nT_e_1_mu_0_pi0_2_pi_2_n_0_p_2,
  nT_e_1_mu_0_pi0_2_pi_1_n_1_p_2, nT_e_1_mu_0_pi0_2_pi_1_n_1_p_0, nT_e_1_mu_0_pi0_2_pi_1_n_0_p_1, nT_e_1_mu_0_pi0_2_pi_1_n_0_p_0,
  nT_e_1_mu_0_pi0_2_pi_0_n_1_p_1, nT_e_1_mu_0_pi0_2_pi_0_n_0_p_1, nT_e_1_mu_0_pi0_1_pi_1_n_2_p_2, nT_e_1_mu_0_pi0_1_pi_1_n_1_p_2,
  nT_e_1_mu_0_pi0_1_pi_1_n_1_p_0, nT_e_1_mu_0_pi0_1_pi_0_n_2_p_2, nT_e_1_mu_0_pi0_1_pi_0_n_2_p_1, nT_e_1_mu_0_pi0_1_pi_0_n_1_p_1,
  nT_e_1_mu_0_pi0_1_pi_0_n_0_p_2, nT_e_1_mu_0_pi0_0_pi_2_n_2_p_1, nT_e_1_mu_0_pi0_0_pi_2_n_1_p_2, nT_e_1_mu_0_pi0_0_pi_2_n_1_p_0,
  nT_e_1_mu_0_pi0_0_pi_2_n_0_p_0, nT_e_1_mu_0_pi0_0_pi_1_n_2_p_1, nT_e_1_mu_0_pi0_0_pi_1_n_2_p_0, nT_e_1_mu_0_pi0_0_pi_1_n_1_p_1,
  nT_e_1_mu_0_pi0_0_pi_0_n_2_p_1, nT_e_1_mu_0_pi0_0_pi_0_n_1_p_2, nT_e_1_mu_0_pi0_0_pi_0_n_1_p_0, nT_e_1_mu_0_pi0_0_pi_0_n_0_p_2,
  nT_e_0_mu_1_pi0_2_pi_2_n_2_p_0, nT_e_0_mu_1_pi0_2_pi_2_n_1_p_2, nT_e_0_mu_1_pi0_2_pi_2_n_1_p_1, nT_e_0_mu_1_pi0_2_pi_2_n_0_p_2,
  nT_e_0_mu_1_pi0_2_pi_1_n_1_p_0, nT_e_0_mu_1_pi0_2_pi_1_n_0_p_1, nT_e_0_mu_1_pi0_2_pi_0_n_2_p_2, nT_e_0_mu_1_pi0_2_pi_0_n_0_p_1,
  nT_e_0_mu_1_pi0_1_pi_2_n_1_p_2, nT_e_0_mu_1_pi0_1_pi_2_n_0_p_2, nT_e_0_mu_1_pi0_1_pi_1_n_2_p_1, nT_e_0_mu_1_pi0_1_pi_1_n_0_p_1,
  nT_e_0_mu_1_pi0_0_pi_2_n_2_p_0, nT_e_0_mu_1_pi0_0_pi_2_n_1_p_2, nT_e_0_mu_1_pi0_0_pi_1_n_2_p_1, nT_e_0_mu_1_pi0_0_pi_1_n_0_p_2,
  nT_e_0_mu_1_pi0_0_pi_0_n_1_p_2, nT_e_0_mu_0_pi0_2_pi_1_n_1_p_2, nT_e_0_mu_0_pi0_2_pi_1_n_1_p_1, nT_e_0_mu_0_pi0_2_pi_1_n_0_p_0,
  nT_e_0_mu_0_pi0_2_pi_0_n_1_p_2, nT_e_0_mu_0_pi0_1_pi_1_n_2_p_1, nT_e_0_mu_0_pi0_1_pi_0_n_0_p_1, nT_e_0_mu_0_pi0_0_pi_0_n_0_p_1,
  nM_e_0_mu_1_pi0_2_pi_2_n_0_p_0, nM_e_0_mu_1_pi0_2_pi_0_n_2_p_1, nM_e_0_mu_1_pi0_2_pi_0_n_2_p_0, nM_e_0_mu_1_pi0_2_pi_0_n_0_p_0,
  nM_e_0_mu_1_pi0_1_pi_0_n_2_p_0, nE_e_1_mu_1_pi0_1_pi_0_n_1_p_0, nE_e_1_mu_0_pi0_2_pi_2_n_0_p_0, nE_e_1_mu_0_pi0_2_pi_1_n_2_p_0,
  nE_e_1_mu_0_pi0_2_pi_0_n_2_p_0, nE_e_1_mu_0_pi0_1_pi_0_n_2_p_0, nE_e_1_mu_0_pi0_1_pi_0_n_1_p_0, nM_Other,
  nE_Other, nT_Other, kCosmic_PT, kOther_PT,
  kNIntType_PT
}
 
enum  PType {
  kElectron, kMuon, kProton, kNeutron,
  kPion, kPiZero, kGamma, kOtherPDG,
  kUnknown, kEmpty, kEM, kHadron
}
 
enum  SimpleNeutrino {
  kNumu, kNue, kNutau, kNuNC,
  kCos, kNSimpleNeutrinoType
}
 

Functions

std::ostream & operator<< (std::ostream &os, const PixelMapProducer &p)
 
std::ostream & operator<< (std::ostream &os, const RegPixelMapProducer &p)
 
std::map< int, intGetMultiplicityMap (const art::Ptr< simb::MCTruth > truth, std::vector< int > PDGs, bool *isnuint, bool *iscc, int *nupdg, int *trueMode)
 
FinalStateType GetFinalStateType (const art::Ptr< simb::MCTruth > truth)
 
FinalStateProngsType GetFinalStateProngsType (const art::Ptr< simb::MCTruth > truth)
 
InteractionType GetInteractionType (const simb::MCTruth &truth)
 
InteractionType GetInteractionTypeFromSlice (int pdg, bool iscc, int trueMode)
 
InteractionType SliceClassify (const art::Ptr< simb::MCTruth > truth, const rb::Cluster &slice, float &nuEnergy, float &lepEnergy, double &vtxx, double &vtxy, double &vtxz)
 
ParticlesType MakeParticleLabel (const art::Ptr< simb::MCTruth > truth, std::string NuType)
 
ParticlesType ParticlesSliceClassify (const art::Ptr< simb::MCTruth > truth, const rb::Cluster &slice, float &nuEnergy, float &lepEnergy, double &vtxx, double &vtxy, double &vtxz)
 
HitType GetHitTypeByPDG (int pdg)
 
HitType HitClassify (art::Ptr< rb::CellHit > Hit, HitType *hType, double *hPurity)
 
int HitObject (art::Ptr< rb::CellHit > Hit, int &hObjectCount, std::map< int, int > &hObjectMap)
 
int HitNuIndex (art::Ptr< rb::CellHit > Hit, const rb::Cluster &evtCluster)
 
ParentParticleType GetParentParticleType (const art::Ptr< simb::MCTruth > truth, const art::Event &evt)
 
ProngType GetTypeByPDG (int pdg)
 
ProngType ProngClassify (const rb::Prong &prong, ProngType *pType3D, ProngType *pTypeX, ProngType *pTypeY, bool *isprimary, double *purity3D, double *purityX, double *purityY, double *recE, unsigned int *ncellX, unsigned int *ncellY)
 
std::vector< std::pair< int, double > > GetProngPurityByPDG (const rb::Cluster &prong)
 
std::vector< std::pair< int, double > > GetProngEfficiencyByPDG (const rb::Cluster &prong, const rb::Cluster &slice)
 
std::vector< std::pair< int, double > > GetProngEnergyByPDG (const rb::Cluster &prong)
 
std::vector< std::pair< int, double > > Get2DProngPurityByPDG (const rb::Cluster &prong)
 
std::vector< std::pair< int, double > > Get2DProngEfficiencyByPDG (const rb::Cluster &prong, const rb::Cluster &slice)
 
std::vector< std::pair< int, double > > Get2DProngEnergyByPDG (const rb::Cluster &prong)
 
std::ostream & operator<< (std::ostream &os, const Boundary &b)
 
std::ostream & operator<< (std::ostream &os, const PixelMap &m)
 
int GetPDGByPType (PType ptype)
 
std::ostream & operator<< (std::ostream &os, const RegPixelMap &m)
 
SimpleNeutrinoType GetSimpleNeutrinoType (const InteractionType &intType)
 

Detailed Description

Defines an enumeration for prong classification.

The ProngTrainingData objects contains a PixelMap and the output type within the chosen classification which will later go into the CNN.

The ProngTrainingData object contains a PixelMap and the output class type, and any other bit that goes into the ANN.

The TrainingData objects contains a PixelMap and the output class type, and any other bit that goes into the ANN.

Defines an enumeration for int type by parent particle type.

Defines an enumeration for interaction type.

Defines an enumeration for cellhit classification.

Defines an enumeration for int type by final state.

Defines an enumeration for int type by final state nprongs.

The EventLabeledPMaps objects contains a PixelMap and the output class type, and any other bit that goes into the ANN.

The EventLabeledPMaps object contains all pixel maps and corresponding labels for selected slices an prongs in the event. These are the input for the CNN.

Typedef Documentation

typedef enum cvn::HType cvn::HitType
typedef std::vector<ViewVectorF> cvn::ImageVectorF

Definition at line 19 of file RegCVNImageUtils.h.

typedef enum cvn::PType cvn::ProngType
typedef std::vector<std::vector<float> > cvn::ViewVectorF

Useful typedefs.

Definition at line 18 of file RegCVNImageUtils.h.

Enumeration Type Documentation

Enumerator
kNumu0tr0sh 

Numu CC - no track no shower.

kNumu0tr1sh 

Numu CC - no track 1 shower.

kNumu0tr2sh 

Numu CC - no track 2 shower.

kNumu0trMsh 

Numu CC - no track 3+ shower.

kNumu1tr0sh 

Numu CC - 1 track no shower.

kNumu1tr1sh 

Numu CC - 1 track 1 shower.

kNumu1tr2sh 

Numu CC - 1 track 2 shower.

kNumu1trMsh 

Numu CC - 1 track 3+ shower.

kNumu2tr0sh 

Numu CC - 2 track no shower.

kNumu2tr1sh 

Numu CC - 2 track 1 shower.

kNumu2tr2sh 

Numu CC - 2 track 2 shower.

kNumu2trMsh 

Numu CC - 2 track 3+ shower.

kNumuMtr0sh 

Numu CC - 3+ track no shower.

kNumuMtr1sh 

Numu CC - 3+ track 1 shower.

kNumuMtr2sh 

Numu CC - 3+ track 2 shower.

kNumuMtrMsh 

Numu CC - 3+ track 3+ shower.

kNue0tr0sh 

Nue CC - no track no shower.

kNue0tr1sh 

Nue CC - no track 1 shower.

kNue0tr2sh 

Nue CC - no track 2 shower.

kNue0trMsh 

Nue CC - no track 3+ shower.

kNue1tr0sh 

Nue CC - 1 track no shower.

kNue1tr1sh 

Nue CC - 1 track 1 shower.

kNue1tr2sh 

Nue CC - 1 track 2 shower.

kNue1trMsh 

Nue CC - 1 track 3+ shower.

kNue2tr0sh 

Nue CC - 2 track no shower.

kNue2tr1sh 

Nue CC - 2 track 1 shower.

kNue2tr2sh 

Nue CC - 2 track 2 shower.

kNue2trMsh 

Nue CC - 2 track 3+ shower.

kNueMtr0sh 

Nue CC - 3+ track no shower.

kNueMtr1sh 

Nue CC - 3+ track 1 shower.

kNueMtr2sh 

Nue CC - 3+ track 2 shower.

kNueMtrMsh 

Nue CC - 3+ track 3+ shower.

kNC0tr0sh 

NC CC - no track no shower.

kNC0tr1sh 

NC CC - no track 1 shower.

kNC0tr2sh 

NC CC - no track 2 shower.

kNC0trMsh 

NC CC - no track 3+ shower.

kNC1tr0sh 

NC CC - 1 track no shower.

kNC1tr1sh 

NC CC - 1 track 1 shower.

kNC1tr2sh 

NC CC - 1 track 2 shower.

kNC1trMsh 

NC CC - 1 track 3+ shower.

kNC2tr0sh 

NC CC - 2 track no shower.

kNC2tr1sh 

NC CC - 2 track 1 shower.

kNC2tr2sh 

NC CC - 2 track 2 shower.

kNC2trMsh 

NC CC - 2 track 3+ shower.

kNCMtr0sh 

NC CC - 3+ track no shower.

kNCMtr1sh 

NC CC - 3+ track 1 shower.

kNCMtr2sh 

NC CC - 3+ track 2 shower.

kNCMtrMsh 

NC CC - 3+ track 3+ shower.

kCosmicFS 

Cosmic ray background.

kOtherFS 

Something else. Tau? Hopefully we don't use this.

kNFStType 

Number of interaction types, used like a vector size.

Definition at line 15 of file FinalStateType.h.

16  {
17  kNumu0tr0sh, ///< Numu CC - no track no shower
18  kNumu0tr1sh, ///< Numu CC - no track 1 shower
19  kNumu0tr2sh, ///< Numu CC - no track 2 shower
20  kNumu0trMsh, ///< Numu CC - no track 3+ shower
21  kNumu1tr0sh, ///< Numu CC - 1 track no shower
22  kNumu1tr1sh, ///< Numu CC - 1 track 1 shower
23  kNumu1tr2sh, ///< Numu CC - 1 track 2 shower
24  kNumu1trMsh, ///< Numu CC - 1 track 3+ shower
25  kNumu2tr0sh, ///< Numu CC - 2 track no shower
26  kNumu2tr1sh, ///< Numu CC - 2 track 1 shower
27  kNumu2tr2sh, ///< Numu CC - 2 track 2 shower
28  kNumu2trMsh, ///< Numu CC - 2 track 3+ shower
29  kNumuMtr0sh, ///< Numu CC - 3+ track no shower
30  kNumuMtr1sh, ///< Numu CC - 3+ track 1 shower
31  kNumuMtr2sh, ///< Numu CC - 3+ track 2 shower
32  kNumuMtrMsh, ///< Numu CC - 3+ track 3+ shower
33  kNue0tr0sh, ///< Nue CC - no track no shower
34  kNue0tr1sh, ///< Nue CC - no track 1 shower
35  kNue0tr2sh, ///< Nue CC - no track 2 shower
36  kNue0trMsh, ///< Nue CC - no track 3+ shower
37  kNue1tr0sh, ///< Nue CC - 1 track no shower
38  kNue1tr1sh, ///< Nue CC - 1 track 1 shower
39  kNue1tr2sh, ///< Nue CC - 1 track 2 shower
40  kNue1trMsh, ///< Nue CC - 1 track 3+ shower
41  kNue2tr0sh, ///< Nue CC - 2 track no shower
42  kNue2tr1sh, ///< Nue CC - 2 track 1 shower
43  kNue2tr2sh, ///< Nue CC - 2 track 2 shower
44  kNue2trMsh, ///< Nue CC - 2 track 3+ shower
45  kNueMtr0sh, ///< Nue CC - 3+ track no shower
46  kNueMtr1sh, ///< Nue CC - 3+ track 1 shower
47  kNueMtr2sh, ///< Nue CC - 3+ track 2 shower
48  kNueMtrMsh, ///< Nue CC - 3+ track 3+ shower
49  kNC0tr0sh, ///< NC CC - no track no shower
50  kNC0tr1sh, ///< NC CC - no track 1 shower
51  kNC0tr2sh, ///< NC CC - no track 2 shower
52  kNC0trMsh, ///< NC CC - no track 3+ shower
53  kNC1tr0sh, ///< NC CC - 1 track no shower
54  kNC1tr1sh, ///< NC CC - 1 track 1 shower
55  kNC1tr2sh, ///< NC CC - 1 track 2 shower
56  kNC1trMsh, ///< NC CC - 1 track 3+ shower
57  kNC2tr0sh, ///< NC CC - 2 track no shower
58  kNC2tr1sh, ///< NC CC - 2 track 1 shower
59  kNC2tr2sh, ///< NC CC - 2 track 2 shower
60  kNC2trMsh, ///< NC CC - 2 track 3+ shower
61  kNCMtr0sh, ///< NC CC - 3+ track no shower
62  kNCMtr1sh, ///< NC CC - 3+ track 1 shower
63  kNCMtr2sh, ///< NC CC - 3+ track 2 shower
64  kNCMtrMsh, ///< NC CC - 3+ track 3+ shower
65  kCosmicFS, ///< Cosmic ray background
66  kOtherFS, ///< Something else. Tau? Hopefully we don't use this
67  kNFStType ///< Number of interaction types, used like a vector size
NC CC - 1 track 2 shower.
Numu CC - no track 1 shower.
Numu CC - 1 track 3+ shower.
Nue CC - no track 1 shower.
NC CC - 2 track 3+ shower.
Cosmic ray background.
NC CC - no track no shower.
Number of interaction types, used like a vector size.
Nue CC - 3+ track 3+ shower.
Numu CC - 3+ track no shower.
NC CC - 3+ track no shower.
NC CC - 1 track no shower.
NC CC - 3+ track 2 shower.
Numu CC - 1 track no shower.
Numu CC - 2 track no shower.
Nue CC - 1 track 2 shower.
Numu CC - 2 track 1 shower.
NC CC - 2 track 2 shower.
Nue CC - 1 track 1 shower.
NC CC - 2 track 1 shower.
Something else. Tau? Hopefully we don&#39;t use this.
Numu CC - no track no shower.
NC CC - 3+ track 1 shower.
Numu CC - 1 track 2 shower.
enum cvn::FinalState FinalStateType
NC CC - 1 track 3+ shower.
Nue CC - 2 track no shower.
NC CC - no track 2 shower.
Numu CC - 3+ track 1 shower.
Nue CC - 1 track 3+ shower.
Nue CC - 1 track no shower.
Nue CC - 2 track 2 shower.
Numu CC - 2 track 3+ shower.
Nue CC - no track 2 shower.
Nue CC - 2 track 3+ shower.
Nue CC - no track no shower.
Nue CC - 3+ track 2 shower.
Nue CC - no track 3+ shower.
Numu CC - 3+ track 3+ shower.
NC CC - no track 3+ shower.
Numu CC - no track 2 shower.
NC CC - no track 1 shower.
Numu CC - 2 track 2 shower.
Numu CC - 1 track 1 shower.
Nue CC - 3+ track 1 shower.
Nue CC - 3+ track no shower.
Numu CC - no track 3+ shower.
NC CC - 1 track 1 shower.
Numu CC - 3+ track 2 shower.
NC CC - 2 track no shower.
NC CC - 3+ track 3+ shower.
Nue CC - 2 track 1 shower.
Enumerator
kNumu1prong 

Numu CC - 1 prong.

kNumu2prong 

Numu CC - 2 prong.

kNumu3prong 

Numu CC - 3 prong.

kNumuMprong 

Numu CC - 4+ prong.

kNue1prong 

Nue CC - 1 prong.

kNue2prong 

Nue CC - 2 prong.

kNue3prong 

Nue CC - 3 prong.

kNueMprong 

Nue CC - 4+ prong.

kNC1prong 

NC - 1 prong.

kNC2prong 

NC - 2 prong.

kNC3prong 

NC - 3 prong.

kNCMprong 

NC - 4+ prong.

kCosmicFSp 

Cosmic ray background.

kOtherFSp 

Something else. Tau? Hopefully we don't use this.

kNFSpType 

Number of interaction types, used like a vector size.

Definition at line 15 of file FinalStateProngsType.h.

16  {
17  kNumu1prong, ///< Numu CC - 1 prong
18  kNumu2prong, ///< Numu CC - 2 prong
19  kNumu3prong, ///< Numu CC - 3 prong
20  kNumuMprong, ///< Numu CC - 4+ prong
21  kNue1prong, ///< Nue CC - 1 prong
22  kNue2prong, ///< Nue CC - 2 prong
23  kNue3prong, ///< Nue CC - 3 prong
24  kNueMprong, ///< Nue CC - 4+ prong
25  kNC1prong, ///< NC - 1 prong
26  kNC2prong, ///< NC - 2 prong
27  kNC3prong, ///< NC - 3 prong
28  kNCMprong, ///< NC - 4+ prong
29  kCosmicFSp, ///< Cosmic ray background
30  kOtherFSp, ///< Something else. Tau? Hopefully we don't use this
31  kNFSpType ///< Number of interaction types, used like a vector size
Nue CC - 4+ prong.
NC - 2 prong.
Something else. Tau? Hopefully we don&#39;t use this.
Numu CC - 3 prong.
Nue CC - 2 prong.
Number of interaction types, used like a vector size.
Numu CC - 4+ prong.
Nue CC - 1 prong.
Numu CC - 2 prong.
Nue CC - 3 prong.
NC - 3 prong.
NC - 1 prong.
enum cvn::FinalStateProngs FinalStateProngsType
Numu CC - 1 prong.
Cosmic ray background.
NC - 4+ prong.
enum cvn::HType
Enumerator
kEmptyHit 
kElectronHit 
kMuonHit 
kProtonHit 
kNeutronHit 
kPionHit 
kPiZeroHit 
kGammaHit 
kMostlyHA 
kMostlyEM 
kMostlyMU 
kUnknownHit 

Definition at line 14 of file HitType.h.

Enumerator
kNumuQE 

Numu CC QE interaction.

kNumuRes 

Numu CC Resonant interaction.

kNumuDIS 

Numu CC DIS interaction.

kNumuOther 

Numu CC, other than above.

kNueQE 

Nue CC QE interaction.

kNueRes 

Nue CC Resonant interaction.

kNueDIS 

Nue CC DIS interaction.

kNueOther 

Nue CC, other than above.

kNutauQE 

Nutau CC QE interaction.

kNutauRes 

Nutau CC Resonant interaction.

kNutauDIS 

Nutau CC DIS interaction.

kNutauOther 

Nutau CC, other than above.

kNuElectronElastic 

NC Nu On E Scattering.

kNC 

NC interaction.

kCosmic 

Cosmic ray background.

kOther 

Something else. Tau? Hopefully we don't use this.

kNIntType 

Number of interaction types, used like a vector size.

Definition at line 15 of file InteractionType.h.

16  {
17  kNumuQE, ///< Numu CC QE interaction
18  kNumuRes, ///< Numu CC Resonant interaction
19  kNumuDIS, ///< Numu CC DIS interaction
20  kNumuOther, ///< Numu CC, other than above
21  kNueQE, ///< Nue CC QE interaction
22  kNueRes, ///< Nue CC Resonant interaction
23  kNueDIS, ///< Nue CC DIS interaction
24  kNueOther, ///< Nue CC, other than above
25  kNutauQE, ///< Nutau CC QE interaction
26  kNutauRes, ///< Nutau CC Resonant interaction
27  kNutauDIS, ///< Nutau CC DIS interaction
28  kNutauOther, ///< Nutau CC, other than above
29  kNuElectronElastic,///< NC Nu On E Scattering
30  kNC, ///< NC interaction
31  kCosmic, ///< Cosmic ray background
32  kOther, ///< Something else. Tau? Hopefully we don't use this
33  kNIntType ///< Number of interaction types, used like a vector size
Nue CC QE interaction.
Nue CC DIS interaction.
NC Nu On E Scattering.
Nutau CC, other than above.
Nutau CC DIS interaction.
Nutau CC Resonant interaction.
enum cvn::Interaction InteractionType
Cosmic ray background.
Nue CC Resonant interaction.
Nue CC, other than above.
NC interaction.
Numu CC Resonant interaction.
Number of interaction types, used like a vector size.
Something else. Tau? Hopefully we don&#39;t use this.
Numu CC QE interaction.
Nutau CC QE interaction.
Numu CC, other than above.
Numu CC DIS interaction.
Enumerator
kPiNuCCPP 

Pi Parent Particle.

kKaNuCCPP 

K Parent Particle.

kMuNuCCPP 

mu minus Parent Particle

kPiNuNCPP 

Pi Parent Particle.

kKaNuNCPP 

K Parent Particle.

kMuNuNCPP 

mu minus Parent Particle

kCosmicPP 

Cosmic ray background.

kOtherPP 

Something else.

kUnknownPP 

Catch all term, shouldn't be used.

kNPPtType 

Number of Parent Particle types, used like a vector size.

Definition at line 15 of file ParentParticleType.h.

15  {
16  kPiNuCCPP, ///< Pi Parent Particle
17  kKaNuCCPP, ///< K Parent Particle
18  kMuNuCCPP, ///< mu minus Parent Particle
19  kPiNuNCPP, ///< Pi Parent Particle
20  kKaNuNCPP, ///< K Parent Particle
21  kMuNuNCPP, ///< mu minus Parent Particle
22  kCosmicPP, ///< Cosmic ray background
23  kOtherPP, ///< Something else
24  kUnknownPP, ///< Catch all term, shouldn't be used
25  kNPPtType ///< Number of Parent Particle types, used like a vector size
Number of Parent Particle types, used like a vector size.
Cosmic ray background.
Pi Parent Particle.
K Parent Particle.
K Parent Particle.
mu minus Parent Particle
Catch all term, shouldn&#39;t be used.
Something else.
enum cvn::ParentParticle ParentParticleType
Pi Parent Particle.
mu minus Parent Particle
Enumerator
nE_e_1_mu_0_pi0_0_pi_0_n_0_p_1 
nM_e_0_mu_1_pi0_0_pi_0_n_0_p_1 
nM_e_0_mu_1_pi0_0_pi_1_n_0_p_1 
nU_e_0_mu_0_pi0_1_pi_0_n_0_p_1 
nE_e_1_mu_0_pi0_0_pi_1_n_0_p_1 
nE_e_1_mu_0_pi0_0_pi_0_n_2_p_2 
nU_e_0_mu_0_pi0_0_pi_1_n_0_p_1 
nE_e_1_mu_0_pi0_0_pi_1_n_1_p_0 
nM_e_0_mu_1_pi0_0_pi_1_n_1_p_0 
nU_e_0_mu_0_pi0_0_pi_1_n_1_p_0 
nU_e_0_mu_0_pi0_1_pi_0_n_1_p_0 
nM_e_0_mu_1_pi0_0_pi_0_n_2_p_2 
nU_e_0_mu_0_pi0_1_pi_0_n_1_p_1 
nM_e_0_mu_1_pi0_0_pi_0_n_1_p_1 
nE_e_1_mu_0_pi0_0_pi_0_n_1_p_1 
nU_e_0_mu_0_pi0_1_pi_0_n_2_p_2 
nE_e_1_mu_0_pi0_0_pi_0_n_1_p_2 
nE_e_1_mu_0_pi0_0_pi_1_n_2_p_2 
nM_e_0_mu_1_pi0_0_pi_1_n_1_p_1 
nE_e_1_mu_0_pi0_0_pi_0_n_0_p_2 
nU_e_0_mu_0_pi0_0_pi_2_n_0_p_1 
nM_e_0_mu_1_pi0_0_pi_0_n_1_p_2 
nU_e_0_mu_0_pi0_0_pi_0_n_2_p_2 
nM_e_0_mu_1_pi0_0_pi_0_n_0_p_2 
nE_e_1_mu_0_pi0_1_pi_0_n_0_p_1 
nE_e_1_mu_0_pi0_0_pi_1_n_1_p_1 
nU_e_0_mu_0_pi0_1_pi_1_n_1_p_0 
nU_e_0_mu_0_pi0_0_pi_1_n_1_p_1 
nM_e_0_mu_1_pi0_1_pi_0_n_0_p_1 
nU_e_0_mu_0_pi0_0_pi_2_n_1_p_0 
nU_e_0_mu_0_pi0_0_pi_1_n_2_p_2 
nE_e_1_mu_0_pi0_1_pi_1_n_0_p_1 
nU_e_0_mu_0_pi0_1_pi_2_n_0_p_1 
nM_e_0_mu_1_pi0_0_pi_1_n_2_p_2 
nE_e_1_mu_0_pi0_0_pi_2_n_0_p_1 
nU_e_0_mu_0_pi0_1_pi_2_n_2_p_2 
nU_e_0_mu_0_pi0_1_pi_2_n_1_p_0 
nU_e_0_mu_0_pi0_1_pi_1_n_0_p_1 
nU_e_0_mu_0_pi0_2_pi_2_n_0_p_1 
nU_e_0_mu_0_pi0_0_pi_0_n_0_p_1 
nU_e_0_mu_0_pi0_0_pi_2_n_2_p_2 
nU_e_0_mu_0_pi0_0_pi_2_n_1_p_1 
nM_e_0_mu_1_pi0_0_pi_1_n_0_p_2 
nU_e_0_mu_0_pi0_1_pi_0_n_0_p_0 
nE_e_1_mu_0_pi0_0_pi_1_n_0_p_2 
nU_e_0_mu_0_pi0_0_pi_1_n_0_p_2 
nT_e_0_mu_0_pi0_0_pi_2_n_0_p_1 
nU_e_0_mu_0_pi0_1_pi_0_n_2_p_0 
nU_e_0_mu_0_pi0_0_pi_1_n_2_p_0 
nM_e_0_mu_1_pi0_1_pi_1_n_0_p_1 
nE_e_1_mu_0_pi0_1_pi_2_n_0_p_1 
nU_e_0_mu_0_pi0_2_pi_2_n_1_p_0 
nM_e_0_mu_1_pi0_0_pi_1_n_2_p_1 
nU_e_0_mu_0_pi0_1_pi_0_n_0_p_2 
nU_e_0_mu_0_pi0_0_pi_1_n_2_p_1 
nM_e_0_mu_1_pi0_1_pi_2_n_0_p_1 
nM_e_0_mu_1_pi0_0_pi_2_n_1_p_0 
nE_e_1_mu_0_pi0_0_pi_2_n_1_p_0 
nU_e_0_mu_0_pi0_0_pi_0_n_1_p_0 
nM_e_0_mu_1_pi0_0_pi_2_n_0_p_1 
nM_e_0_mu_1_pi0_0_pi_1_n_1_p_2 
nU_e_0_mu_0_pi0_2_pi_0_n_0_p_1 
nU_e_0_mu_0_pi0_1_pi_1_n_2_p_2 
nU_e_0_mu_0_pi0_1_pi_0_n_2_p_1 
nU_e_0_mu_0_pi0_0_pi_1_n_1_p_2 
nE_e_1_mu_0_pi0_1_pi_2_n_1_p_0 
nE_e_1_mu_0_pi0_0_pi_0_n_2_p_1 
nT_e_0_mu_0_pi0_0_pi_2_n_1_p_0 
nM_e_0_mu_1_pi0_1_pi_0_n_0_p_2 
nE_e_1_mu_0_pi0_0_pi_1_n_2_p_1 
nU_e_0_mu_0_pi0_2_pi_2_n_1_p_1 
nM_e_0_mu_1_pi0_1_pi_1_n_1_p_0 
nM_e_0_mu_1_pi0_0_pi_2_n_1_p_1 
nU_e_0_mu_0_pi0_0_pi_0_n_2_p_1 
nM_e_0_mu_1_pi0_1_pi_0_n_2_p_2 
nE_e_1_mu_0_pi0_0_pi_2_n_1_p_1 
nU_e_0_mu_0_pi0_2_pi_2_n_2_p_2 
nT_e_0_mu_0_pi0_2_pi_2_n_0_p_1 
nM_e_0_mu_1_pi0_1_pi_1_n_1_p_1 
nU_e_0_mu_0_pi0_1_pi_2_n_1_p_1 
nU_e_0_mu_0_pi0_0_pi_2_n_2_p_1 
nU_e_0_mu_0_pi0_0_pi_2_n_0_p_2 
nM_e_0_mu_1_pi0_0_pi_0_n_2_p_1 
nE_e_1_mu_0_pi0_1_pi_0_n_1_p_1 
nM_e_0_mu_1_pi0_1_pi_0_n_1_p_1 
nE_e_1_mu_0_pi0_1_pi_1_n_1_p_0 
nE_e_1_mu_0_pi0_0_pi_2_n_2_p_2 
nU_e_0_mu_0_pi0_1_pi_1_n_1_p_1 
nE_e_1_mu_0_pi0_2_pi_2_n_2_p_2 
nE_e_1_mu_0_pi0_2_pi_2_n_0_p_1 
nE_e_1_mu_0_pi0_1_pi_1_n_1_p_1 
nU_e_0_mu_0_pi0_1_pi_1_n_2_p_0 
nU_e_0_mu_0_pi0_1_pi_1_n_1_p_2 
nU_e_0_mu_0_pi0_0_pi_2_n_1_p_2 
nU_e_0_mu_0_pi0_0_pi_0_n_1_p_2 
nT_e_0_mu_0_pi0_2_pi_2_n_2_p_2 
nT_e_0_mu_0_pi0_2_pi_2_n_1_p_0 
nT_e_0_mu_0_pi0_1_pi_2_n_0_p_1 
nM_e_0_mu_1_pi0_1_pi_2_n_1_p_0 
nE_e_1_mu_0_pi0_1_pi_0_n_0_p_2 
nM_e_0_mu_1_pi0_1_pi_2_n_1_p_1 
nM_e_0_mu_1_pi0_0_pi_1_n_2_p_0 
nU_e_0_mu_0_pi0_1_pi_2_n_2_p_0 
nU_e_0_mu_0_pi0_0_pi_0_n_0_p_0 
nT_e_0_mu_0_pi0_1_pi_2_n_1_p_0 
nM_e_0_mu_1_pi0_2_pi_2_n_0_p_1 
nE_e_1_mu_0_pi0_0_pi_2_n_1_p_2 
nE_e_1_mu_0_pi0_0_pi_1_n_0_p_0 
nU_e_0_mu_0_pi0_2_pi_1_n_2_p_2 
nU_e_0_mu_0_pi0_2_pi_1_n_0_p_1 
nT_e_0_mu_0_pi0_0_pi_2_n_1_p_1 
nM_e_0_mu_1_pi0_0_pi_2_n_0_p_2 
nE_e_1_mu_0_pi0_2_pi_2_n_1_p_0 
nE_e_1_mu_0_pi0_0_pi_1_n_1_p_2 
nU_e_0_mu_0_pi0_2_pi_0_n_2_p_2 
nU_e_0_mu_0_pi0_0_pi_2_n_2_p_0 
nU_e_0_mu_0_pi0_0_pi_0_n_1_p_1 
nM_e_0_mu_1_pi0_1_pi_2_n_0_p_2 
nM_e_0_mu_1_pi0_0_pi_1_n_0_p_0 
nE_e_1_mu_0_pi0_1_pi_0_n_2_p_2 
nU_e_0_mu_0_pi0_2_pi_2_n_0_p_2 
nU_e_0_mu_0_pi0_1_pi_1_n_0_p_2 
nM_e_0_mu_1_pi0_1_pi_2_n_2_p_0 
nM_e_0_mu_1_pi0_0_pi_2_n_2_p_2 
nE_e_1_mu_0_pi0_0_pi_1_n_2_p_0 
nU_e_0_mu_0_pi0_2_pi_0_n_1_p_1 
nM_e_0_mu_1_pi0_2_pi_2_n_2_p_2 
nE_e_1_mu_0_pi0_1_pi_2_n_2_p_2 
nE_e_1_mu_0_pi0_1_pi_2_n_2_p_1 
nE_e_1_mu_0_pi0_0_pi_0_n_1_p_0 
nU_e_0_mu_0_pi0_2_pi_2_n_2_p_0 
nU_e_0_mu_0_pi0_2_pi_0_n_1_p_0 
nU_e_0_mu_0_pi0_1_pi_2_n_2_p_1 
nU_e_0_mu_0_pi0_1_pi_2_n_1_p_2 
nU_e_0_mu_0_pi0_1_pi_1_n_2_p_1 
nU_e_0_mu_0_pi0_0_pi_0_n_2_p_0 
nT_e_0_mu_0_pi0_0_pi_1_n_0_p_1 
nM_e_0_mu_1_pi0_1_pi_2_n_2_p_2 
nM_e_0_mu_1_pi0_0_pi_0_n_1_p_0 
nE_e_1_mu_0_pi0_2_pi_1_n_0_p_1 
nE_e_1_mu_0_pi0_1_pi_1_n_2_p_2 
nE_e_1_mu_0_pi0_1_pi_0_n_1_p_2 
nU_e_0_mu_0_pi0_1_pi_0_n_1_p_2 
nU_e_0_mu_0_pi0_0_pi_2_n_0_p_0 
nT_e_0_mu_0_pi0_1_pi_2_n_2_p_2 
nT_e_0_mu_0_pi0_0_pi_2_n_2_p_2 
nM_e_0_mu_1_pi0_2_pi_2_n_1_p_0 
nM_e_0_mu_1_pi0_1_pi_1_n_0_p_2 
nM_e_0_mu_1_pi0_1_pi_0_n_1_p_2 
nE_e_1_mu_0_pi0_1_pi_2_n_1_p_2 
nE_e_1_mu_0_pi0_1_pi_1_n_0_p_2 
nU_e_0_mu_0_pi0_2_pi_1_n_1_p_0 
nT_e_0_mu_1_pi0_0_pi_0_n_0_p_1 
nM_e_0_mu_1_pi0_2_pi_2_n_1_p_1 
nM_e_0_mu_1_pi0_2_pi_1_n_0_p_1 
nM_e_0_mu_1_pi0_1_pi_1_n_2_p_2 
nM_e_0_mu_1_pi0_1_pi_1_n_1_p_2 
nM_e_0_mu_1_pi0_0_pi_2_n_2_p_1 
nE_e_1_mu_0_pi0_2_pi_1_n_2_p_2 
nE_e_1_mu_0_pi0_0_pi_2_n_0_p_2 
nE_e_1_mu_0_pi0_0_pi_0_n_0_p_0 
nU_e_0_mu_0_pi0_2_pi_2_n_2_p_1 
nU_e_0_mu_0_pi0_2_pi_2_n_1_p_2 
nU_e_0_mu_0_pi0_2_pi_1_n_2_p_1 
nU_e_0_mu_0_pi0_2_pi_0_n_1_p_2 
nU_e_0_mu_0_pi0_1_pi_2_n_0_p_2 
nU_e_0_mu_0_pi0_0_pi_0_n_0_p_2 
nM_e_0_mu_1_pi0_2_pi_0_n_0_p_1 
nE_e_1_mu_0_pi0_2_pi_2_n_1_p_1 
nE_e_1_mu_0_pi0_2_pi_0_n_0_p_1 
nE_e_1_mu_0_pi0_1_pi_1_n_2_p_1 
nT_e_0_mu_1_pi0_0_pi_1_n_0_p_1 
nM_e_0_mu_1_pi0_2_pi_0_n_0_p_2 
nM_e_0_mu_1_pi0_0_pi_2_n_2_p_0 
nM_e_0_mu_1_pi0_0_pi_2_n_1_p_2 
nE_e_1_mu_0_pi0_2_pi_2_n_2_p_1 
nE_e_1_mu_0_pi0_2_pi_2_n_0_p_2 
nE_e_1_mu_0_pi0_1_pi_2_n_0_p_2 
nE_e_1_mu_0_pi0_1_pi_1_n_1_p_2 
nT_e_0_mu_0_pi0_1_pi_1_n_0_p_1 
nT_e_0_mu_0_pi0_0_pi_2_n_0_p_2 
nM_e_0_mu_1_pi0_1_pi_2_n_2_p_1 
nE_e_1_mu_0_pi0_2_pi_0_n_0_p_2 
nE_e_1_mu_0_pi0_1_pi_0_n_2_p_1 
nE_e_1_mu_0_pi0_0_pi_2_n_2_p_0 
nE_e_1_mu_0_pi0_0_pi_0_n_2_p_0 
nU_e_0_mu_0_pi0_2_pi_1_n_1_p_1 
nT_e_0_mu_1_pi0_0_pi_1_n_1_p_0 
nT_e_0_mu_0_pi0_0_pi_2_n_2_p_0 
nM_e_0_mu_1_pi0_1_pi_2_n_1_p_2 
nE_e_1_mu_0_pi0_2_pi_2_n_1_p_2 
nE_e_1_mu_0_pi0_2_pi_1_n_1_p_0 
nU_e_0_mu_0_pi0_2_pi_0_n_2_p_1 
nU_e_0_mu_0_pi0_1_pi_2_n_0_p_0 
nT_e_1_mu_0_pi0_0_pi_1_n_1_p_0 
nT_e_1_mu_0_pi0_0_pi_1_n_0_p_1 
nT_e_0_mu_0_pi0_2_pi_2_n_0_p_2 
nT_e_0_mu_0_pi0_2_pi_1_n_0_p_1 
nT_e_0_mu_0_pi0_1_pi_2_n_1_p_1 
nM_e_0_mu_1_pi0_2_pi_2_n_0_p_2 
nM_e_0_mu_1_pi0_2_pi_1_n_1_p_0 
nE_e_1_mu_0_pi0_1_pi_2_n_1_p_1 
nE_e_1_mu_0_pi0_0_pi_2_n_0_p_0 
nU_e_0_mu_0_pi0_2_pi_1_n_2_p_0 
nU_e_0_mu_0_pi0_2_pi_1_n_0_p_2 
nU_e_0_mu_0_pi0_2_pi_0_n_2_p_0 
nT_e_1_mu_0_pi0_1_pi_2_n_1_p_0 
nT_e_1_mu_0_pi0_1_pi_2_n_0_p_1 
nT_e_1_mu_0_pi0_0_pi_0_n_0_p_1 
nT_e_0_mu_1_pi0_0_pi_2_n_2_p_2 
nT_e_0_mu_1_pi0_0_pi_2_n_0_p_1 
nT_e_0_mu_0_pi0_2_pi_2_n_1_p_1 
nT_e_0_mu_0_pi0_1_pi_2_n_2_p_1 
nT_e_0_mu_0_pi0_1_pi_2_n_1_p_2 
nT_e_0_mu_0_pi0_0_pi_2_n_1_p_2 
nT_e_0_mu_0_pi0_0_pi_2_n_0_p_0 
nT_e_0_mu_0_pi0_0_pi_1_n_2_p_2 
nM_e_0_mu_1_pi0_2_pi_1_n_0_p_2 
nM_e_0_mu_1_pi0_1_pi_1_n_2_p_1 
nM_e_0_mu_1_pi0_1_pi_1_n_2_p_0 
nM_e_0_mu_1_pi0_1_pi_0_n_1_p_0 
nM_e_0_mu_1_pi0_0_pi_2_n_0_p_0 
nE_e_1_mu_0_pi0_2_pi_1_n_1_p_2 
nE_e_1_mu_0_pi0_2_pi_1_n_1_p_1 
nE_e_1_mu_0_pi0_2_pi_1_n_0_p_2 
nE_e_1_mu_0_pi0_2_pi_0_n_1_p_1 
nE_e_1_mu_0_pi0_0_pi_2_n_2_p_1 
nU_e_0_mu_0_pi0_2_pi_2_n_0_p_0 
nT_e_1_mu_0_pi0_0_pi_2_n_0_p_1 
nT_e_1_mu_0_pi0_0_pi_0_n_1_p_1 
nT_e_0_mu_0_pi0_2_pi_2_n_0_p_0 
nM_e_0_mu_1_pi0_2_pi_2_n_2_p_0 
nM_e_0_mu_1_pi0_2_pi_1_n_2_p_2 
nM_e_0_mu_1_pi0_2_pi_1_n_1_p_2 
nM_e_0_mu_1_pi0_2_pi_1_n_1_p_1 
nM_e_0_mu_1_pi0_2_pi_0_n_2_p_2 
nM_e_0_mu_1_pi0_2_pi_0_n_1_p_2 
nE_e_1_mu_0_pi0_2_pi_2_n_2_p_0 
nE_e_1_mu_0_pi0_2_pi_0_n_2_p_2 
nE_e_1_mu_0_pi0_2_pi_0_n_2_p_1 
nE_e_1_mu_0_pi0_2_pi_0_n_1_p_2 
nE_e_1_mu_0_pi0_1_pi_2_n_2_p_0 
nU_e_0_mu_0_pi0_2_pi_1_n_1_p_2 
nU_e_0_mu_0_pi0_1_pi_1_n_0_p_0 
nU_e_0_mu_0_pi0_0_pi_1_n_0_p_0 
nT_e_1_mu_0_pi0_1_pi_2_n_1_p_2 
nT_e_1_mu_0_pi0_0_pi_2_n_2_p_0 
nT_e_1_mu_0_pi0_0_pi_1_n_2_p_2 
nT_e_0_mu_1_pi0_2_pi_2_n_1_p_0 
nT_e_0_mu_1_pi0_2_pi_2_n_0_p_1 
nT_e_0_mu_1_pi0_1_pi_2_n_0_p_1 
nT_e_0_mu_1_pi0_1_pi_0_n_0_p_1 
nT_e_0_mu_1_pi0_0_pi_2_n_1_p_0 
nT_e_0_mu_1_pi0_0_pi_2_n_0_p_2 
nT_e_0_mu_1_pi0_0_pi_0_n_2_p_2 
nT_e_0_mu_1_pi0_0_pi_0_n_0_p_2 
nT_e_0_mu_0_pi0_2_pi_2_n_2_p_0 
nT_e_0_mu_0_pi0_2_pi_2_n_1_p_2 
nT_e_0_mu_0_pi0_2_pi_1_n_0_p_2 
nT_e_0_mu_0_pi0_1_pi_2_n_0_p_2 
nT_e_0_mu_0_pi0_1_pi_1_n_1_p_2 
nT_e_0_mu_0_pi0_1_pi_1_n_1_p_1 
nT_e_0_mu_0_pi0_1_pi_1_n_0_p_2 
nT_e_0_mu_0_pi0_0_pi_1_n_1_p_2 
nT_e_0_mu_0_pi0_0_pi_1_n_0_p_0 
nM_e_0_mu_1_pi0_2_pi_2_n_2_p_1 
nM_e_0_mu_1_pi0_2_pi_2_n_1_p_2 
nM_e_0_mu_1_pi0_2_pi_0_n_1_p_1 
nM_e_0_mu_1_pi0_1_pi_0_n_2_p_1 
nM_e_0_mu_1_pi0_1_pi_0_n_0_p_0 
nM_e_0_mu_1_pi0_0_pi_0_n_0_p_0 
nE_e_1_mu_0_pi0_1_pi_2_n_0_p_0 
nU_e_0_mu_0_pi0_2_pi_0_n_0_p_2 
nT_e_1_mu_0_pi0_1_pi_0_n_0_p_1 
nT_e_1_mu_0_pi0_0_pi_0_n_0_p_0 
nT_e_0_mu_1_pi0_1_pi_2_n_2_p_2 
nT_e_0_mu_1_pi0_1_pi_1_n_1_p_0 
nT_e_0_mu_0_pi0_2_pi_2_n_2_p_1 
nT_e_0_mu_0_pi0_1_pi_1_n_2_p_2 
nT_e_0_mu_0_pi0_1_pi_1_n_1_p_0 
nT_e_0_mu_0_pi0_0_pi_1_n_1_p_1 
nT_e_0_mu_0_pi0_0_pi_1_n_0_p_2 
nM_e_0_mu_1_pi0_2_pi_1_n_2_p_1 
nM_e_0_mu_1_pi0_2_pi_1_n_2_p_0 
nM_e_0_mu_1_pi0_1_pi_2_n_0_p_0 
nM_e_0_mu_1_pi0_0_pi_0_n_2_p_0 
nE_e_1_mu_0_pi0_2_pi_1_n_2_p_1 
nE_e_1_mu_0_pi0_1_pi_1_n_2_p_0 
nE_e_1_mu_0_pi0_1_pi_1_n_0_p_0 
nE_e_1_mu_0_pi0_1_pi_0_n_0_p_0 
nU_e_1_mu_0_pi0_0_pi_2_n_1_p_1 
nU_e_0_mu_0_pi0_2_pi_1_n_0_p_0 
nT_e_1_mu_0_pi0_2_pi_2_n_1_p_1 
nT_e_1_mu_0_pi0_2_pi_2_n_1_p_0 
nT_e_1_mu_0_pi0_2_pi_2_n_0_p_1 
nT_e_1_mu_0_pi0_2_pi_1_n_1_p_1 
nT_e_1_mu_0_pi0_1_pi_2_n_1_p_1 
nT_e_1_mu_0_pi0_1_pi_2_n_0_p_2 
nT_e_1_mu_0_pi0_1_pi_1_n_1_p_1 
nT_e_1_mu_0_pi0_1_pi_1_n_0_p_1 
nT_e_1_mu_0_pi0_0_pi_0_n_2_p_2 
nT_e_0_mu_1_pi0_2_pi_2_n_2_p_2 
nT_e_0_mu_1_pi0_2_pi_2_n_2_p_1 
nT_e_0_mu_1_pi0_2_pi_0_n_1_p_2 
nT_e_0_mu_1_pi0_1_pi_2_n_1_p_1 
nT_e_0_mu_1_pi0_1_pi_2_n_1_p_0 
nT_e_0_mu_1_pi0_1_pi_0_n_2_p_2 
nT_e_0_mu_1_pi0_1_pi_0_n_2_p_1 
nT_e_0_mu_1_pi0_0_pi_2_n_1_p_1 
nT_e_0_mu_1_pi0_0_pi_1_n_2_p_2 
nT_e_0_mu_1_pi0_0_pi_1_n_2_p_0 
nT_e_0_mu_1_pi0_0_pi_1_n_1_p_2 
nT_e_0_mu_1_pi0_0_pi_1_n_1_p_1 
nT_e_0_mu_1_pi0_0_pi_0_n_1_p_1 
nT_e_0_mu_0_pi0_2_pi_1_n_2_p_2 
nT_e_0_mu_0_pi0_1_pi_2_n_2_p_0 
nT_e_0_mu_0_pi0_1_pi_2_n_0_p_0 
nT_e_0_mu_0_pi0_1_pi_1_n_2_p_0 
nT_e_0_mu_0_pi0_0_pi_2_n_2_p_1 
nT_e_0_mu_0_pi0_0_pi_1_n_2_p_1 
nT_e_0_mu_0_pi0_0_pi_1_n_2_p_0 
nT_e_0_mu_0_pi0_0_pi_1_n_1_p_0 
nM_e_1_mu_1_pi0_0_pi_1_n_0_p_1 
nM_e_0_mu_1_pi0_1_pi_1_n_0_p_0 
nE_e_1_mu_0_pi0_2_pi_1_n_0_p_0 
nU_e_1_mu_0_pi0_0_pi_0_n_0_p_0 
nT_e_1_mu_0_pi0_2_pi_2_n_2_p_2 
nT_e_1_mu_0_pi0_2_pi_2_n_0_p_2 
nT_e_1_mu_0_pi0_2_pi_1_n_1_p_2 
nT_e_1_mu_0_pi0_2_pi_1_n_1_p_0 
nT_e_1_mu_0_pi0_2_pi_1_n_0_p_1 
nT_e_1_mu_0_pi0_2_pi_1_n_0_p_0 
nT_e_1_mu_0_pi0_2_pi_0_n_1_p_1 
nT_e_1_mu_0_pi0_2_pi_0_n_0_p_1 
nT_e_1_mu_0_pi0_1_pi_1_n_2_p_2 
nT_e_1_mu_0_pi0_1_pi_1_n_1_p_2 
nT_e_1_mu_0_pi0_1_pi_1_n_1_p_0 
nT_e_1_mu_0_pi0_1_pi_0_n_2_p_2 
nT_e_1_mu_0_pi0_1_pi_0_n_2_p_1 
nT_e_1_mu_0_pi0_1_pi_0_n_1_p_1 
nT_e_1_mu_0_pi0_1_pi_0_n_0_p_2 
nT_e_1_mu_0_pi0_0_pi_2_n_2_p_1 
nT_e_1_mu_0_pi0_0_pi_2_n_1_p_2 
nT_e_1_mu_0_pi0_0_pi_2_n_1_p_0 
nT_e_1_mu_0_pi0_0_pi_2_n_0_p_0 
nT_e_1_mu_0_pi0_0_pi_1_n_2_p_1 
nT_e_1_mu_0_pi0_0_pi_1_n_2_p_0 
nT_e_1_mu_0_pi0_0_pi_1_n_1_p_1 
nT_e_1_mu_0_pi0_0_pi_0_n_2_p_1 
nT_e_1_mu_0_pi0_0_pi_0_n_1_p_2 
nT_e_1_mu_0_pi0_0_pi_0_n_1_p_0 
nT_e_1_mu_0_pi0_0_pi_0_n_0_p_2 
nT_e_0_mu_1_pi0_2_pi_2_n_2_p_0 
nT_e_0_mu_1_pi0_2_pi_2_n_1_p_2 
nT_e_0_mu_1_pi0_2_pi_2_n_1_p_1 
nT_e_0_mu_1_pi0_2_pi_2_n_0_p_2 
nT_e_0_mu_1_pi0_2_pi_1_n_1_p_0 
nT_e_0_mu_1_pi0_2_pi_1_n_0_p_1 
nT_e_0_mu_1_pi0_2_pi_0_n_2_p_2 
nT_e_0_mu_1_pi0_2_pi_0_n_0_p_1 
nT_e_0_mu_1_pi0_1_pi_2_n_1_p_2 
nT_e_0_mu_1_pi0_1_pi_2_n_0_p_2 
nT_e_0_mu_1_pi0_1_pi_1_n_2_p_1 
nT_e_0_mu_1_pi0_1_pi_1_n_0_p_1 
nT_e_0_mu_1_pi0_0_pi_2_n_2_p_0 
nT_e_0_mu_1_pi0_0_pi_2_n_1_p_2 
nT_e_0_mu_1_pi0_0_pi_1_n_2_p_1 
nT_e_0_mu_1_pi0_0_pi_1_n_0_p_2 
nT_e_0_mu_1_pi0_0_pi_0_n_1_p_2 
nT_e_0_mu_0_pi0_2_pi_1_n_1_p_2 
nT_e_0_mu_0_pi0_2_pi_1_n_1_p_1 
nT_e_0_mu_0_pi0_2_pi_1_n_0_p_0 
nT_e_0_mu_0_pi0_2_pi_0_n_1_p_2 
nT_e_0_mu_0_pi0_1_pi_1_n_2_p_1 
nT_e_0_mu_0_pi0_1_pi_0_n_0_p_1 
nT_e_0_mu_0_pi0_0_pi_0_n_0_p_1 
nM_e_0_mu_1_pi0_2_pi_2_n_0_p_0 
nM_e_0_mu_1_pi0_2_pi_0_n_2_p_1 
nM_e_0_mu_1_pi0_2_pi_0_n_2_p_0 
nM_e_0_mu_1_pi0_2_pi_0_n_0_p_0 
nM_e_0_mu_1_pi0_1_pi_0_n_2_p_0 
nE_e_1_mu_1_pi0_1_pi_0_n_1_p_0 
nE_e_1_mu_0_pi0_2_pi_2_n_0_p_0 
nE_e_1_mu_0_pi0_2_pi_1_n_2_p_0 
nE_e_1_mu_0_pi0_2_pi_0_n_2_p_0 
nE_e_1_mu_0_pi0_1_pi_0_n_2_p_0 
nE_e_1_mu_0_pi0_1_pi_0_n_1_p_0 
nM_Other 
nE_Other 
nT_Other 
kCosmic_PT 
kOther_PT 

Whatever is left.

kNIntType_PT 

Number of interaction types, used like a vector size.

Definition at line 15 of file ParticlesType.h.

16  {
17  //kSignal_ND, /// At least one muon and one pion
18  //kOther_ND, ///< Background
19  //kNIntType_ND ///< Number of interaction types, used like a vector size
20 
408 nM_Other,
409 nE_Other,
410 nT_Other,
411 kCosmic_PT,
412 kOther_PT, ///< Whatever is left
413 kNIntType_PT ///< Number of interaction types, used like a vector size
414  } ParticlesType;
Number of interaction types, used like a vector size.
Whatever is left.
enum cvn::Particles ParticlesType
enum cvn::PType
Enumerator
kElectron 
kMuon 
kProton 
kNeutron 
kPion 
kPiZero 
kGamma 
kOtherPDG 
kUnknown 
kEmpty 
kEM 
kHadron 

Definition at line 18 of file ProngType.h.

19  {
20  kElectron,
21  kMuon,
22  kProton,
23  kNeutron,
24  kPion,
25  kPiZero,
26  kGamma,
27  kOtherPDG,
28  kUnknown,
29  kEmpty,
30  kEM,
31  kHadron
32  } ProngType;
enum cvn::PType ProngType
Enumerator
kNumu 

Numu CC interaction.

kNue 

Nue CC QE interaction.

kNutau 

Nutau CC QE interaction.

kNuNC 

NC interaction.

kCos 

Cosmics.

kNSimpleNeutrinoType 

Number of types, used like a vector size.

Definition at line 16 of file SimpleNeutrinoType.h.

17  {
18  kNumu, ///< Numu CC interaction
19  kNue, ///< Nue CC QE interaction
20  kNutau, ///< Nutau CC QE interaction
21  kNuNC, ///< NC interaction
22  kCos, ///< Cosmics
23  kNSimpleNeutrinoType ///< Number of types, used like a vector size
enum cvn::SimpleNeutrino SimpleNeutrinoType
Nue CC QE interaction.
Nutau CC QE interaction.
NC interaction.
Number of types, used like a vector size.
Numu CC interaction.

Function Documentation

std::vector< std::pair< int, double > > cvn::Get2DProngEfficiencyByPDG ( const rb::Cluster prong,
const rb::Cluster slice 
)

Definition at line 1401 of file AssignLabels.cxx.

References rb::Cluster::AllCells(), dE, cheat::BackTracker::HitCollectionEfficiency(), cheat::BackTracker::HitsToTrackIDE(), kEmpty, kUnknown, geo::kXorY, make_pair(), rb::Cluster::NXCell(), rb::Cluster::NYCell(), simb::MCParticle::PdgCode(), and cheat::BackTracker::TrackIDToParticle().

Referenced by bpf::BPFCVNAna::analyze().

1403  {
1404 
1406 
1407  std::vector< std::pair<int, double> > efficiencybypdg;
1408 
1409  // Check nhits > 0 and number of associated trackIDs > 0 for the prong
1410  ProngType pType3D = kUnknown;
1411  if( prong.NXCell() == 0 &&
1412  prong.NYCell() == 0) pType3D = kEmpty;
1413 
1414  std::vector<cheat::TrackIDE> ParticleTrackIDs;
1415  if( pType3D != kEmpty )
1416  ParticleTrackIDs = bt->HitsToTrackIDE(prong.AllCells());
1417 
1418  if( ParticleTrackIDs.size() < 1 ) pType3D = kEmpty;
1419 
1420  if( pType3D != kEmpty ){
1421 
1422  for (unsigned int iID=0; iID < ParticleTrackIDs.size(); ++iID){
1423  std::set<int> TrackID;
1424  std::map<int, double> purMap;
1425  double dE, tE;
1426  std::map<int, int> parents;
1427 
1428  int iPartID = ParticleTrackIDs[iID].trackID;
1429  TrackID.insert(iPartID);
1430  int iPartPDG = bt->TrackIDToParticle(iPartID)->PdgCode();
1431 
1432  double iPartEff = bt->HitCollectionEfficiency(TrackID, prong.AllCells(),slice.AllCells(),
1433  geo::kXorY, &purMap,true, &dE, &tE);
1434 
1435  efficiencybypdg.push_back(std::make_pair(iPartPDG, iPartEff));
1436 
1437  }//iTrackID
1438  }
1439 
1440  return efficiencybypdg;
1441  }// 2DProngEfficiencyByPDG
int PdgCode() const
Definition: MCParticle.h:211
enum cvn::PType ProngType
X or Y views.
Definition: PlaneGeo.h:30
std::pair< Spectrum *, CheatDecomp * > make_pair(SpectrumLoaderBase &loader_data, SpectrumLoaderBase &loader_mc, HistAxis *axis, Cut *cut, const SystShifts &shift, const Var &wei)
Definition: DataMCLoad.C:336
double dE
art::PtrVector< rb::CellHit > AllCells() const
Get all cells from both views.
Definition: Cluster.cxx:180
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...
const sim::Particle * TrackIDToParticle(int const &id) const
Returns a pointer to the sim::Particle object corresponding to the given TrackID. ...
unsigned int NYCell() const
Number of cells in the y-view.
Definition: Cluster.h:108
std::vector< TrackIDE > HitsToTrackIDE(const std::vector< const rb::CellHit * > &hits, bool useBirksE=false) const
Returns vector of TrackIDE structs contributing to the given collection of hits.
unsigned int NXCell() const
Number of cells in the x-view.
Definition: Cluster.h:106
std::vector< std::pair< int, double > > cvn::Get2DProngEnergyByPDG ( const rb::Cluster prong)

Definition at line 1444 of file AssignLabels.cxx.

References rb::Cluster::AllCells(), simb::MCParticle::E(), cheat::BackTracker::HitsToTrackIDE(), kEmpty, kUnknown, make_pair(), rb::Cluster::NXCell(), rb::Cluster::NYCell(), simb::MCParticle::PdgCode(), and cheat::BackTracker::TrackIDToParticle().

Referenced by bpf::BPFCVNAna::analyze().

1445  {
1446 
1448 
1449  std::vector< std::pair<int, double> > energybypdg;
1450 
1451  // Check nhits > 0 and number of associated trackIDs > 0 for the prong
1452  ProngType pType3D = kUnknown;
1453  if( prong.NXCell() == 0 &&
1454  prong.NYCell() == 0) pType3D = kEmpty;
1455 
1456  std::vector<cheat::TrackIDE> ParticleTrackIDs;
1457  if( pType3D != kEmpty )
1458  ParticleTrackIDs = bt->HitsToTrackIDE(prong.AllCells());
1459 
1460  if( ParticleTrackIDs.size() < 1 ) pType3D = kEmpty;
1461 
1462  if( pType3D != kEmpty ){
1463 
1464  for (unsigned int iID=0; iID < ParticleTrackIDs.size(); ++iID){
1465  std::set<int> TrackID;
1466  std::map<int, double> purMap;
1467  std::map<int, int> parents;
1468 
1469  int iPartID = ParticleTrackIDs[iID].trackID;
1470  TrackID.insert(iPartID);
1471  int iPartPDG = bt->TrackIDToParticle(iPartID)->PdgCode();
1472  double iPartE = bt->TrackIDToParticle(iPartID)->E();
1473 
1474  energybypdg.push_back(std::make_pair(iPartPDG, iPartE));
1475 
1476  }//iTrackID
1477  }
1478 
1479  return energybypdg;
1480  }// 2DProngEnergyByPDG
double E(const int i=0) const
Definition: MCParticle.h:232
int PdgCode() const
Definition: MCParticle.h:211
enum cvn::PType ProngType
std::pair< Spectrum *, CheatDecomp * > make_pair(SpectrumLoaderBase &loader_data, SpectrumLoaderBase &loader_mc, HistAxis *axis, Cut *cut, const SystShifts &shift, const Var &wei)
Definition: DataMCLoad.C:336
art::PtrVector< rb::CellHit > AllCells() const
Get all cells from both views.
Definition: Cluster.cxx:180
const sim::Particle * TrackIDToParticle(int const &id) const
Returns a pointer to the sim::Particle object corresponding to the given TrackID. ...
unsigned int NYCell() const
Number of cells in the y-view.
Definition: Cluster.h:108
std::vector< TrackIDE > HitsToTrackIDE(const std::vector< const rb::CellHit * > &hits, bool useBirksE=false) const
Returns vector of TrackIDE structs contributing to the given collection of hits.
unsigned int NXCell() const
Number of cells in the x-view.
Definition: Cluster.h:106
std::vector< std::pair< int, double > > cvn::Get2DProngPurityByPDG ( const rb::Cluster prong)

Definition at line 1361 of file AssignLabels.cxx.

References rb::Cluster::AllCells(), cheat::BackTracker::HitCollectionPurity(), cheat::BackTracker::HitsToTrackIDE(), kEmpty, kUnknown, make_pair(), rb::Cluster::NXCell(), rb::Cluster::NYCell(), simb::MCParticle::PdgCode(), and cheat::BackTracker::TrackIDToParticle().

Referenced by bpf::BPFCVNAna::analyze().

1362  {
1363 
1365 
1366  std::vector< std::pair<int, double> > puritybypdg;
1367 
1368  // Check nhits > 0 and number of associated trackIDs > 0 for the prong
1369  ProngType pType3D = kUnknown;
1370  if( prong.NXCell() == 0 &&
1371  prong.NYCell() == 0) pType3D = kEmpty;
1372 
1373 
1374  std::vector<cheat::TrackIDE> ParticleTrackIDs;
1375  if( pType3D != kEmpty )
1376  ParticleTrackIDs = bt->HitsToTrackIDE(prong.AllCells());
1377 
1378  if( ParticleTrackIDs.size() < 1 ) pType3D = kEmpty;
1379 
1380  if( pType3D != kEmpty ){
1381 
1382  for (unsigned int iID=0; iID < ParticleTrackIDs.size(); ++iID){
1383  std::set<int> TrackID;
1384  std::map<int, double> purMap;
1385  std::map<int, int> parents;
1386 
1387  int iPartID = ParticleTrackIDs[iID].trackID;
1388  TrackID.insert(iPartID);
1389  int iPartPDG = bt->TrackIDToParticle(iPartID)->PdgCode();
1390  double iPartPur = bt->HitCollectionPurity(TrackID, prong.AllCells(),
1391  &purMap, &parents,true);
1392  puritybypdg.push_back(std::make_pair(iPartPDG, iPartPur));
1393 
1394  }//iTrackID
1395  }
1396 
1397  return puritybypdg;
1398  }// 2DProngPurityByPDG
int PdgCode() const
Definition: MCParticle.h:211
enum cvn::PType ProngType
std::pair< Spectrum *, CheatDecomp * > make_pair(SpectrumLoaderBase &loader_data, SpectrumLoaderBase &loader_mc, HistAxis *axis, Cut *cut, const SystShifts &shift, const Var &wei)
Definition: DataMCLoad.C:336
art::PtrVector< rb::CellHit > AllCells() const
Get all cells from both views.
Definition: Cluster.cxx:180
double HitCollectionPurity(const std::set< int > &trackIDs, const std::vector< rb::WeightedHit > &whits, std::map< int, double > *purMap=0, std::map< int, int > *parents=0, bool energyPur=false) const
Returns the fraction of hits in a collection that come from the specified Geant4 track ids...
const sim::Particle * TrackIDToParticle(int const &id) const
Returns a pointer to the sim::Particle object corresponding to the given TrackID. ...
unsigned int NYCell() const
Number of cells in the y-view.
Definition: Cluster.h:108
std::vector< TrackIDE > HitsToTrackIDE(const std::vector< const rb::CellHit * > &hits, bool useBirksE=false) const
Returns vector of TrackIDE structs contributing to the given collection of hits.
unsigned int NXCell() const
Number of cells in the x-view.
Definition: Cluster.h:106
FinalStateProngsType cvn::GetFinalStateProngsType ( const art::Ptr< simb::MCTruth truth)

Definition at line 137 of file AssignLabels.cxx.

References GetMultiplicityMap(), MECModelEnuComparisons::i, iscc, kCosmicFSp, kNC1prong, kNC2prong, kNC3prong, kNCMprong, kNue1prong, kNue2prong, kNueMprong, kNumu1prong, kNumu2prong, kNumuMprong, and kOtherFSp.

Referenced by cvn::CVNEventDump::analyze(), cvn::CVNCosmicEventDump::analyze(), cvn::CVNEventProngDump::analyze(), and cvn::CVNAddTrainingData::produce().

138  {
139 
140  int nupdg, truemode;
141  bool isnuint, iscc;
142  std::vector<int> PDGs={11,13,2212,211,111,2112,0}; // e,mu,p,pi,pi0,n,other
143  std::map<int,int> NPrimariesPDG = GetMultiplicityMap(truth,PDGs,&isnuint
144  ,&iscc,&nupdg,&truemode);
145 
146 
147  // Count number of prongs = charged primaries + 2*(pi0 primaries)
148  int Nprongs=0;
149  for ( unsigned int i = 0; i < PDGs.size(); ++i){
150 
151  if ( PDGs[i] == 2112 ) continue;
152  if ( PDGs[i] == 111 )
153  Nprongs = Nprongs+(2*NPrimariesPDG[PDGs[i]]);
154  else
155  Nprongs = Nprongs+( NPrimariesPDG[PDGs[i]] );
156 
157  }
158 
159 
160  if ( isnuint ){
161  if( iscc ){
162  if ( nupdg == 14 && Nprongs == 1 ) return kNumu1prong;
163  if ( nupdg == 14 && Nprongs == 2 ) return kNumu2prong;
164  if ( nupdg == 14 && Nprongs == 3 ) return kNumu2prong;
165  if ( nupdg == 14 && Nprongs > 3 ) return kNumuMprong;
166  if ( nupdg == 12 && Nprongs == 1 ) return kNue1prong;
167  if ( nupdg == 12 && Nprongs == 2 ) return kNue2prong;
168  if ( nupdg == 12 && Nprongs == 3 ) return kNue2prong;
169  if ( nupdg == 12 && Nprongs > 3 ) return kNueMprong;
170  if ( nupdg != 12 && nupdg != 14 ) return kOtherFSp;
171  }//cc
172  else{
173  if ( Nprongs == 1 ) return kNC1prong;
174  if ( Nprongs == 2 ) return kNC2prong;
175  if ( Nprongs == 3 ) return kNC3prong;
176  if ( Nprongs > 3 ) return kNCMprong;
177  }//nc
178  }
179  else return kCosmicFSp;
180 
181  return kOtherFSp;
182  }
Nue CC - 4+ prong.
NC - 2 prong.
Something else. Tau? Hopefully we don&#39;t use this.
int iscc
Nue CC - 2 prong.
Numu CC - 4+ prong.
Nue CC - 1 prong.
Numu CC - 2 prong.
NC - 3 prong.
NC - 1 prong.
Numu CC - 1 prong.
Cosmic ray background.
NC - 4+ prong.
std::map< int, int > GetMultiplicityMap(const art::Ptr< simb::MCTruth > truth, std::vector< int > PDGs, bool *isnuint, bool *iscc, int *nupdg, int *trueMode)
FinalStateType cvn::GetFinalStateType ( const art::Ptr< simb::MCTruth truth)

Definition at line 64 of file AssignLabels.cxx.

References GetMultiplicityMap(), iscc, kCosmicFS, kNC0tr0sh, kNC0tr1sh, kNC0tr2sh, kNC0trMsh, kNC1tr0sh, kNC1tr1sh, kNC1tr2sh, kNC1trMsh, kNC2tr0sh, kNC2tr1sh, kNC2tr2sh, kNC2trMsh, kNCMtr0sh, kNCMtr1sh, kNCMtr2sh, kNCMtrMsh, kNue0tr0sh, kNue0tr1sh, kNue0tr2sh, kNue0trMsh, kNue1tr0sh, kNue1tr1sh, kNue1tr2sh, kNue1trMsh, kNue2tr0sh, kNue2tr1sh, kNue2tr2sh, kNue2trMsh, kNueMtr0sh, kNueMtr1sh, kNueMtr2sh, kNueMtrMsh, kNumu0tr0sh, kNumu0tr1sh, kNumu0tr2sh, kNumu0trMsh, kNumu1tr0sh, kNumu1tr1sh, kNumu1tr2sh, kNumu1trMsh, kNumu2tr0sh, kNumu2tr1sh, kNumu2tr2sh, kNumu2trMsh, kNumuMtr0sh, kNumuMtr1sh, kNumuMtr2sh, kNumuMtrMsh, and kOtherFS.

Referenced by cvn::CVNEventDump::analyze(), cvn::CVNCosmicEventDump::analyze(), cvn::CVNEventProngDump::analyze(), and cvn::CVNAddTrainingData::produce().

65  {
66 
67  int nupdg, truemode;
68  bool isnuint, iscc;
69  std::vector<int> PDGs={11,13,2212,211,111,0}; // e,mu,p,pi,pi0,other
70 
71  std::map<int,int> NPrimariesPDG = GetMultiplicityMap(truth,PDGs,&isnuint
72  ,&iscc,&nupdg,&truemode);
73 
74  int Ntrack = NPrimariesPDG[2212] + NPrimariesPDG[211];
75  int Nshowr = NPrimariesPDG[111];
76 
77  if ( isnuint ){
78  if( iscc ){
79  if ( nupdg == 14 && Ntrack == 0 && Nshowr == 0 ) return kNumu0tr0sh;
80  if ( nupdg == 14 && Ntrack == 0 && Nshowr == 1 ) return kNumu0tr1sh;
81  if ( nupdg == 14 && Ntrack == 0 && Nshowr == 2 ) return kNumu0tr2sh;
82  if ( nupdg == 14 && Ntrack == 0 && Nshowr > 2 ) return kNumu0trMsh;
83  if ( nupdg == 14 && Ntrack == 1 && Nshowr == 0 ) return kNumu1tr0sh;
84  if ( nupdg == 14 && Ntrack == 1 && Nshowr == 1 ) return kNumu1tr1sh;
85  if ( nupdg == 14 && Ntrack == 1 && Nshowr == 2 ) return kNumu1tr2sh;
86  if ( nupdg == 14 && Ntrack == 1 && Nshowr > 2 ) return kNumu1trMsh;
87  if ( nupdg == 14 && Ntrack == 2 && Nshowr == 0 ) return kNumu2tr0sh;
88  if ( nupdg == 14 && Ntrack == 2 && Nshowr == 1 ) return kNumu2tr1sh;
89  if ( nupdg == 14 && Ntrack == 2 && Nshowr == 2 ) return kNumu2tr2sh;
90  if ( nupdg == 14 && Ntrack == 2 && Nshowr > 2 ) return kNumu2trMsh;
91  if ( nupdg == 14 && Ntrack > 2 && Nshowr == 0 ) return kNumuMtr0sh;
92  if ( nupdg == 14 && Ntrack > 2 && Nshowr == 1 ) return kNumuMtr1sh;
93  if ( nupdg == 14 && Ntrack > 2 && Nshowr == 2 ) return kNumuMtr2sh;
94  if ( nupdg == 14 && Ntrack > 2 && Nshowr > 2 ) return kNumuMtrMsh;
95  if ( nupdg == 12 && Ntrack == 0 && Nshowr == 0 ) return kNue0tr0sh;
96  if ( nupdg == 12 && Ntrack == 0 && Nshowr == 1 ) return kNue0tr1sh;
97  if ( nupdg == 12 && Ntrack == 0 && Nshowr == 2 ) return kNue0tr2sh;
98  if ( nupdg == 12 && Ntrack == 0 && Nshowr > 2 ) return kNue0trMsh;
99  if ( nupdg == 12 && Ntrack == 1 && Nshowr == 0 ) return kNue1tr0sh;
100  if ( nupdg == 12 && Ntrack == 1 && Nshowr == 1 ) return kNue1tr1sh;
101  if ( nupdg == 12 && Ntrack == 1 && Nshowr == 2 ) return kNue1tr2sh;
102  if ( nupdg == 12 && Ntrack == 1 && Nshowr > 2 ) return kNue1trMsh;
103  if ( nupdg == 12 && Ntrack == 2 && Nshowr == 0 ) return kNue2tr0sh;
104  if ( nupdg == 12 && Ntrack == 2 && Nshowr == 1 ) return kNue2tr1sh;
105  if ( nupdg == 12 && Ntrack == 2 && Nshowr == 2 ) return kNue2tr2sh;
106  if ( nupdg == 12 && Ntrack == 2 && Nshowr > 2 ) return kNue2trMsh;
107  if ( nupdg == 12 && Ntrack > 2 && Nshowr == 0 ) return kNueMtr0sh;
108  if ( nupdg == 12 && Ntrack > 2 && Nshowr == 1 ) return kNueMtr1sh;
109  if ( nupdg == 12 && Ntrack > 2 && Nshowr == 2 ) return kNueMtr2sh;
110  if ( nupdg == 12 && Ntrack > 2 && Nshowr > 2 ) return kNueMtrMsh;
111  if ( nupdg != 12 && nupdg != 14 ) return kOtherFS;
112  }//cc
113  else{
114  if ( Ntrack == 0 && Nshowr == 0 ) return kNC0tr0sh;
115  if ( Ntrack == 0 && Nshowr == 1 ) return kNC0tr1sh;
116  if ( Ntrack == 0 && Nshowr == 2 ) return kNC0tr2sh;
117  if ( Ntrack == 0 && Nshowr > 2 ) return kNC0trMsh;
118  if ( Ntrack == 1 && Nshowr == 0 ) return kNC1tr0sh;
119  if ( Ntrack == 1 && Nshowr == 1 ) return kNC1tr1sh;
120  if ( Ntrack == 1 && Nshowr == 2 ) return kNC1tr2sh;
121  if ( Ntrack == 1 && Nshowr > 2 ) return kNC1trMsh;
122  if ( Ntrack == 2 && Nshowr == 0 ) return kNC2tr0sh;
123  if ( Ntrack == 2 && Nshowr == 1 ) return kNC2tr1sh;
124  if ( Ntrack == 2 && Nshowr == 2 ) return kNC2tr2sh;
125  if ( Ntrack == 2 && Nshowr > 2 ) return kNC2trMsh;
126  if ( Ntrack > 2 && Nshowr == 0 ) return kNCMtr0sh;
127  if ( Ntrack > 2 && Nshowr == 1 ) return kNCMtr1sh;
128  if ( Ntrack > 2 && Nshowr == 2 ) return kNCMtr2sh;
129  if ( Ntrack > 2 && Nshowr > 2 ) return kNCMtrMsh;
130  }//nc
131  }
132  else return kCosmicFS;
133 
134  return kOtherFS;
135 }
NC CC - 1 track 2 shower.
Numu CC - no track 1 shower.
Numu CC - 1 track 3+ shower.
Nue CC - no track 1 shower.
NC CC - 2 track 3+ shower.
Cosmic ray background.
NC CC - no track no shower.
Nue CC - 3+ track 3+ shower.
Numu CC - 3+ track no shower.
NC CC - 3+ track no shower.
NC CC - 1 track no shower.
NC CC - 3+ track 2 shower.
Numu CC - 1 track no shower.
Numu CC - 2 track no shower.
Nue CC - 1 track 2 shower.
Numu CC - 2 track 1 shower.
NC CC - 2 track 2 shower.
Nue CC - 1 track 1 shower.
int iscc
NC CC - 2 track 1 shower.
Something else. Tau? Hopefully we don&#39;t use this.
Numu CC - no track no shower.
NC CC - 3+ track 1 shower.
Numu CC - 1 track 2 shower.
NC CC - 1 track 3+ shower.
Nue CC - 2 track no shower.
NC CC - no track 2 shower.
Numu CC - 3+ track 1 shower.
Nue CC - 1 track 3+ shower.
Nue CC - 1 track no shower.
Nue CC - 2 track 2 shower.
Numu CC - 2 track 3+ shower.
Nue CC - no track 2 shower.
Nue CC - 2 track 3+ shower.
Nue CC - no track no shower.
Nue CC - 3+ track 2 shower.
Nue CC - no track 3+ shower.
Numu CC - 3+ track 3+ shower.
NC CC - no track 3+ shower.
Numu CC - no track 2 shower.
NC CC - no track 1 shower.
Numu CC - 2 track 2 shower.
Numu CC - 1 track 1 shower.
Nue CC - 3+ track 1 shower.
Nue CC - 3+ track no shower.
std::map< int, int > GetMultiplicityMap(const art::Ptr< simb::MCTruth > truth, std::vector< int > PDGs, bool *isnuint, bool *iscc, int *nupdg, int *trueMode)
Numu CC - no track 3+ shower.
NC CC - 1 track 1 shower.
Numu CC - 3+ track 2 shower.
NC CC - 2 track no shower.
NC CC - 3+ track 3+ shower.
Nue CC - 2 track 1 shower.
HitType cvn::GetHitTypeByPDG ( int  pdg)

Definition at line 793 of file AssignLabels.cxx.

References kElectronHit, kGammaHit, kMostlyHA, kMuonHit, kNeutronHit, kPionHit, kPiZeroHit, and kProtonHit.

Referenced by HitClassify().

794  {
795  switch (pdg) {
796  case 11:
797  case -11:
798  return kElectronHit;
799  case 13:
800  case -13:
801  return kMuonHit;
802  case 2212:
803  return kProtonHit;
804  case 2112:
805  return kNeutronHit;
806  case 111:
807  return kPiZeroHit;
808  case 211:
809  case -211:
810  return kPionHit;
811  case 22:
812  return kGammaHit;
813  default:
814  return kMostlyHA;
815  }
816 
817  }//GetHitTypeByPDG
InteractionType cvn::GetInteractionType ( const simb::MCTruth truth)

Get Interaction_t from pdg, mode and iscc. Setting pdg and mode to zero triggers cosmic ray

Definition at line 187 of file AssignLabels.cxx.

References abs(), simb::MCNeutrino::CCNC(), simb::MCTruth::GetNeutrino(), iscc, simb::kCC, kCosmic, simb::kDIS, kNC, kNueDIS, kNuElectronElastic, simb::kNuElectronElastic, kNueOther, kNueQE, kNueRes, kNumuDIS, kNumuOther, kNumuQE, kNumuRes, kNutauDIS, kNutauOther, kNutauQE, kNutauRes, kOther, simb::kQE, simb::kRes, simb::MCNeutrino::Mode(), simb::MCTruth::NeutrinoSet(), simb::MCNeutrino::Nu(), make_root_from_grid_output::pdg, and simb::MCParticle::PdgCode().

188  {
189 
190  if(truth.NeutrinoSet())
191  {
192  int pdg = truth.GetNeutrino().Nu().PdgCode();
193  bool iscc = truth.GetNeutrino().CCNC() == simb::kCC;
194  int trueMode = truth.GetNeutrino().Mode();
195 
196  if(iscc)
197  {
198  if(abs(pdg) == 14)
199  {
200  switch(trueMode){
201  case simb::kQE: return kNumuQE; break;
202  case simb::kRes: return kNumuRes; break;
203  case simb::kDIS: return kNumuDIS; break;
204  default: return kNumuOther;
205  }
206  }
207  else if(abs(pdg) == 12)
208  {
209  switch(trueMode){
210  case simb::kQE: return kNueQE; break;
211  case simb::kRes: return kNueRes; break;
212  case simb::kDIS: return kNueDIS; break;
213  default: return kNueOther;
214  }
215  }
216  else if(abs(pdg) == 16)
217  {
218  switch(trueMode){
219  case simb::kQE: return kNutauQE; break;
220  case simb::kRes: return kNutauRes; break;
221  case simb::kDIS: return kNutauDIS; break;
222  default: return kNutauOther;
223  }
224  }
225  }
226  else if(trueMode==simb::kNuElectronElastic){
227  return kNuElectronElastic;
228  }
229  else return kNC;
230  }
231  else return kCosmic;
232 
233  return kOther;
234  }
Nue CC QE interaction.
Nue CC DIS interaction.
int PdgCode() const
Definition: MCParticle.h:211
int CCNC() const
Definition: MCNeutrino.h:148
const simb::MCNeutrino & GetNeutrino() const
Definition: MCTruth.h:76
NC Nu On E Scattering.
Nutau CC, other than above.
neutrino electron elastic scatter
Definition: MCNeutrino.h:140
Nutau CC DIS interaction.
const simb::MCParticle & Nu() const
Definition: MCNeutrino.h:146
Nutau CC Resonant interaction.
void abs(TH1 *hist)
Nue CC Resonant interaction.
int iscc
Nue CC, other than above.
Numu CC Resonant interaction.
Something else. Tau? Hopefully we don&#39;t use this.
Numu CC QE interaction.
Nutau CC QE interaction.
Numu CC DIS interaction.
bool NeutrinoSet() const
Definition: MCTruth.h:77
int Mode() const
Definition: MCNeutrino.h:149
InteractionType cvn::GetInteractionTypeFromSlice ( int  pdg,
bool  iscc,
int  trueMode 
)

Definition at line 236 of file AssignLabels.cxx.

References abs(), simb::kDIS, kNC, kNueDIS, kNuElectronElastic, simb::kNuElectronElastic, kNueOther, kNueQE, kNueRes, kNumuDIS, kNumuOther, kNumuQE, kNumuRes, kNutauDIS, kNutauOther, kNutauQE, kNutauRes, kOther, simb::kQE, and simb::kRes.

Referenced by SliceClassify().

237  {
238 
239  if(iscc){
240 
241  if(abs(pdg) == 14){
242  switch(trueMode){
243  case simb::kQE: return kNumuQE; break;
244  case simb::kRes: return kNumuRes; break;
245  case simb::kDIS: return kNumuDIS; break;
246  default: return kNumuOther;
247  }
248  }
249  else if(abs(pdg) == 12){
250  switch(trueMode){
251  case simb::kQE: return kNueQE; break;
252  case simb::kRes: return kNueRes; break;
253  case simb::kDIS: return kNueDIS; break;
254  default: return kNueOther;
255  }
256  }
257  else if(abs(pdg) == 16){
258  switch(trueMode){
259  case simb::kQE: return kNutauQE; break;
260  case simb::kRes: return kNutauRes; break;
261  case simb::kDIS: return kNutauDIS; break;
262  default: return kNutauOther;
263  }
264  }
265 
266  }
267  else if(trueMode==simb::kNuElectronElastic){
268  return kNuElectronElastic;
269  }
270  else return kNC;
271 
272  return kOther;
273  }
Nue CC QE interaction.
Nue CC DIS interaction.
NC Nu On E Scattering.
Nutau CC, other than above.
neutrino electron elastic scatter
Definition: MCNeutrino.h:140
Nutau CC DIS interaction.
Nutau CC Resonant interaction.
void abs(TH1 *hist)
Nue CC Resonant interaction.
int iscc
Nue CC, other than above.
Numu CC Resonant interaction.
Something else. Tau? Hopefully we don&#39;t use this.
Numu CC QE interaction.
Nutau CC QE interaction.
Numu CC DIS interaction.
std::map< int, int > cvn::GetMultiplicityMap ( const art::Ptr< simb::MCTruth truth,
std::vector< int PDGs,
bool *  isnuint,
bool *  iscc,
int nupdg,
int trueMode 
)

Definition at line 24 of file AssignLabels.cxx.

References abs(), simb::MCNeutrino::CCNC(), simb::MCParticle::E(), simb::MCTruth::GetNeutrino(), simb::MCTruth::GetParticle(), MECModelEnuComparisons::i, simb::kCC, simb::MCNeutrino::Mode(), simb::MCTruth::NeutrinoSet(), simb::MCTruth::NParticles(), simb::MCNeutrino::Nu(), make_root_from_grid_output::pdg, simb::MCParticle::PdgCode(), and simb::MCParticle::StatusCode().

Referenced by GetFinalStateProngsType(), and GetFinalStateType().

26  {
27  //
29 
30  std::map<int,int> NumberOfPrimariesPDG;
31 
32  for ( unsigned int i = 0; i < PDGs.size(); ++i)
33  NumberOfPrimariesPDG.insert ( std::pair<int,int>(PDGs[i],0) );
34 
35  if(truth->NeutrinoSet()){
36 
37  *isnuint = true;
38  *iscc = truth->GetNeutrino().CCNC() == simb::kCC;
39  *nupdg = truth->GetNeutrino().Nu().PdgCode();
40  *trueMode = truth->GetNeutrino().Mode();
41 
42  for( int iPart = 0; iPart < truth->NParticles(); iPart++){
43 
44  const simb::MCParticle daughter = truth->GetParticle(iPart);
45  int pdg = abs(daughter.PdgCode());
46 
47  if ( daughter.E() < 0.03 ) continue;
48  if ( daughter.StatusCode() != 1 ) continue;
49 
50  if(NumberOfPrimariesPDG.find(pdg) != NumberOfPrimariesPDG.end())
51  ++NumberOfPrimariesPDG[pdg];
52  else
53  ++NumberOfPrimariesPDG[0];
54 
55  }//Primaries
56 
57  }
58  else
59  *isnuint = false;;
60 
61  return NumberOfPrimariesPDG;
62  }
double E(const int i=0) const
Definition: MCParticle.h:232
int PdgCode() const
Definition: MCParticle.h:211
int CCNC() const
Definition: MCNeutrino.h:148
const simb::MCNeutrino & GetNeutrino() const
Definition: MCTruth.h:76
const simb::MCParticle & Nu() const
Definition: MCNeutrino.h:146
void abs(TH1 *hist)
int StatusCode() const
Definition: MCParticle.h:210
int NParticles() const
Definition: MCTruth.h:74
int iscc
const simb::MCParticle & GetParticle(int i) const
Definition: MCTruth.h:75
bool NeutrinoSet() const
Definition: MCTruth.h:77
int Mode() const
Definition: MCNeutrino.h:149
ParentParticleType cvn::GetParentParticleType ( const art::Ptr< simb::MCTruth truth,
const art::Event evt 
)

Definition at line 1011 of file AssignLabels.cxx.

References simb::MCNeutrino::CCNC(), evt, flux, simb::MCFlux::fptype, simb::MCTruth::GetNeutrino(), iscc, simb::kCC, kCosmicPP, kKaNuCCPP, kKaNuNCPP, kMuNuCCPP, kMuNuNCPP, kOtherPP, kPiNuCCPP, kPiNuNCPP, kUnknownPP, and simb::MCTruth::NeutrinoSet().

Referenced by cvn::CVNEventDump::analyze(), cvn::CVNCosmicEventDump::analyze(), and cvn::CVNAddTrainingData::produce().

1012  {
1013  int parentpdg = -1;
1014  if(truth->NeutrinoSet()){
1015  bool iscc = truth->GetNeutrino().CCNC() == simb::kCC;
1016  art::FindManyP<simb::MCFlux> fmFlux({truth}, evt, art::InputTag("generator"));
1017  if(fmFlux.isValid()){
1018  std::vector< art::Ptr<simb::MCFlux> > fluxes = fmFlux.at(0);
1019  if(!fluxes.empty()){
1020  const simb::MCFlux& flux = *fluxes[0];
1021  parentpdg = flux.fptype;
1022  }
1023  }
1024  if(iscc){
1025  switch(parentpdg) {
1026  case 211:
1027  return kPiNuCCPP;
1028  case -211:
1029  return kPiNuCCPP;
1030  case 321:
1031  return kKaNuCCPP;
1032  case -321:
1033  return kKaNuCCPP;
1034  case 130:
1035  case 310:
1036  case 311:
1037  return kKaNuCCPP;
1038  case 13:
1039  return kMuNuCCPP;
1040  case -13:
1041  return kMuNuCCPP;
1042  }
1043  }
1044  else if(!iscc){
1045  switch(parentpdg) {
1046  case 211:
1047  return kPiNuNCPP;
1048  case -211:
1049  return kPiNuNCPP;
1050  case 321:
1051  return kKaNuNCPP;
1052  case -321:
1053  return kKaNuNCPP;
1054  case 130:
1055  case 310:
1056  case 311:
1057  return kKaNuNCPP;
1058  case 13:
1059  return kMuNuNCPP;
1060  case -13:
1061  return kMuNuNCPP;
1062  }
1063  }
1064  return kOtherPP;
1065  }
1066  else return kCosmicPP;
1067  return kUnknownPP;
1068 
1069  }// GetParentParticleType
int CCNC() const
Definition: MCNeutrino.h:148
const simb::MCNeutrino & GetNeutrino() const
Definition: MCTruth.h:76
Cosmic ray background.
Loaders::FluxType flux
int iscc
Pi Parent Particle.
int fptype
Definition: MCFlux.h:63
K Parent Particle.
int evt
K Parent Particle.
mu minus Parent Particle
Catch all term, shouldn&#39;t be used.
Something else.
Pi Parent Particle.
mu minus Parent Particle
bool NeutrinoSet() const
Definition: MCTruth.h:77
int cvn::GetPDGByPType ( PType  ptype)

Definition at line 5 of file ProngType.cxx.

References kElectron, kEM, kGamma, kHadron, kMuon, kNeutron, kPion, kPiZero, and kProton.

Referenced by cvnprongtf::CVNProngTF::produce(), and cvntf::CVNProngEvaluatorTF::produce().

6  {
7 
8  switch (ptype) {
9  case kElectron:
10  return 11;
11  case kMuon:
12  return 13;
13  case kProton:
14  return 2212;
15  case kNeutron:
16  return 2112;
17  case kPion:
18  return 211;
19  case kPiZero:
20  return 111;
21  case kGamma:
22  return 22;
23 
24  // In the case of composite CVN scores like EMID and HadronID,
25  // represent the PDG code of those types as the product of the two
26  // pdg codes.
27  // Eg. pdgEM = 22 * 11 = 242
28 
29  // This way we can make comparisons with %
30  // pdgEM % 11 == 0
31  case kEM:
32  // pdg 22*11 = 242 describes a bound state of an up and charm quark with spin 1/2
33  // This breaks quantum mechanics, so we're safe
34  return 22 * 11;
35  case kHadron:
36  // pdg 2212*211 = 466732 describes a tb's baryon in the 4th radial eigen state
37  // and an unphysical orbital momentum state.
38  // Pretty sure we won't have to deal with those
39  return 2212 * 211;
40  default:
41  return 0;
42  }
43 
44  }// GetPDGByPType
std::vector< std::pair< int, double > > cvn::GetProngEfficiencyByPDG ( const rb::Cluster prong,
const rb::Cluster slice 
)

Definition at line 1278 of file AssignLabels.cxx.

References rb::Cluster::AllCells(), dE, cheat::BackTracker::HitCollectionEfficiency(), cheat::BackTracker::HitsToTrackIDE(), kEmpty, kUnknown, geo::kXorY, make_pair(), rb::Cluster::NXCell(), rb::Cluster::NYCell(), simb::MCParticle::PdgCode(), and cheat::BackTracker::TrackIDToParticle().

Referenced by bpf::BPFCVNAna::analyze().

1280  {
1281 
1283 
1284  std::vector< std::pair<int, double> > efficiencybypdg;
1285 
1286  // Check nhits > 0 and number of associated trackIDs > 0 for the prong
1287  ProngType pType3D = kUnknown;
1288  if( prong.NXCell() == 0 ||
1289  prong.NYCell() == 0) pType3D = kEmpty;
1290 
1291  std::vector<cheat::TrackIDE> ParticleTrackIDs;
1292  if( pType3D != kEmpty )
1293  ParticleTrackIDs = bt->HitsToTrackIDE(prong.AllCells());
1294 
1295  if( ParticleTrackIDs.size() < 1 ) pType3D = kEmpty;
1296 
1297  if( pType3D != kEmpty ){
1298 
1299  for (unsigned int iID=0; iID < ParticleTrackIDs.size(); ++iID){
1300  std::set<int> TrackID;
1301  std::map<int, double> purMap;
1302  double dE, tE;
1303  std::map<int, int> parents;
1304 
1305  int iPartID = ParticleTrackIDs[iID].trackID;
1306  TrackID.insert(iPartID);
1307  int iPartPDG = bt->TrackIDToParticle(iPartID)->PdgCode();
1308 
1309  double iPartEff = bt->HitCollectionEfficiency(TrackID, prong.AllCells(),slice.AllCells(),
1310  geo::kXorY, &purMap,true, &dE, &tE);
1311 
1312  efficiencybypdg.push_back(std::make_pair(iPartPDG, iPartEff));
1313 
1314  }//iTrackID
1315  }
1316 
1317  return efficiencybypdg;
1318  }// ProngEfficiencyByPDG
int PdgCode() const
Definition: MCParticle.h:211
enum cvn::PType ProngType
X or Y views.
Definition: PlaneGeo.h:30
std::pair< Spectrum *, CheatDecomp * > make_pair(SpectrumLoaderBase &loader_data, SpectrumLoaderBase &loader_mc, HistAxis *axis, Cut *cut, const SystShifts &shift, const Var &wei)
Definition: DataMCLoad.C:336
double dE
art::PtrVector< rb::CellHit > AllCells() const
Get all cells from both views.
Definition: Cluster.cxx:180
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...
const sim::Particle * TrackIDToParticle(int const &id) const
Returns a pointer to the sim::Particle object corresponding to the given TrackID. ...
unsigned int NYCell() const
Number of cells in the y-view.
Definition: Cluster.h:108
std::vector< TrackIDE > HitsToTrackIDE(const std::vector< const rb::CellHit * > &hits, bool useBirksE=false) const
Returns vector of TrackIDE structs contributing to the given collection of hits.
unsigned int NXCell() const
Number of cells in the x-view.
Definition: Cluster.h:106
std::vector< std::pair< int, double > > cvn::GetProngEnergyByPDG ( const rb::Cluster prong)

Definition at line 1321 of file AssignLabels.cxx.

References rb::Cluster::AllCells(), simb::MCParticle::E(), cheat::BackTracker::HitsToTrackIDE(), kEmpty, kUnknown, make_pair(), rb::Cluster::NXCell(), rb::Cluster::NYCell(), simb::MCParticle::PdgCode(), and cheat::BackTracker::TrackIDToParticle().

Referenced by bpf::BPFCVNAna::analyze().

1322  {
1323 
1325 
1326  std::vector< std::pair<int, double> > energybypdg;
1327 
1328  // Check nhits > 0 and number of associated trackIDs > 0 for the prong
1329  ProngType pType3D = kUnknown;
1330  if( prong.NXCell() == 0 ||
1331  prong.NYCell() == 0) pType3D = kEmpty;
1332 
1333  std::vector<cheat::TrackIDE> ParticleTrackIDs;
1334  if( pType3D != kEmpty )
1335  ParticleTrackIDs = bt->HitsToTrackIDE(prong.AllCells());
1336 
1337  if( ParticleTrackIDs.size() < 1 ) pType3D = kEmpty;
1338 
1339  if( pType3D != kEmpty ){
1340 
1341  for (unsigned int iID=0; iID < ParticleTrackIDs.size(); ++iID){
1342  std::set<int> TrackID;
1343  std::map<int, double> purMap;
1344  std::map<int, int> parents;
1345 
1346  int iPartID = ParticleTrackIDs[iID].trackID;
1347  TrackID.insert(iPartID);
1348  int iPartPDG = bt->TrackIDToParticle(iPartID)->PdgCode();
1349  double iPartE = bt->TrackIDToParticle(iPartID)->E();
1350 
1351  energybypdg.push_back(std::make_pair(iPartPDG, iPartE));
1352 
1353  }//iTrackID
1354  }
1355 
1356  return energybypdg;
1357  }// ProngEnergyByPDG
double E(const int i=0) const
Definition: MCParticle.h:232
int PdgCode() const
Definition: MCParticle.h:211
enum cvn::PType ProngType
std::pair< Spectrum *, CheatDecomp * > make_pair(SpectrumLoaderBase &loader_data, SpectrumLoaderBase &loader_mc, HistAxis *axis, Cut *cut, const SystShifts &shift, const Var &wei)
Definition: DataMCLoad.C:336
art::PtrVector< rb::CellHit > AllCells() const
Get all cells from both views.
Definition: Cluster.cxx:180
const sim::Particle * TrackIDToParticle(int const &id) const
Returns a pointer to the sim::Particle object corresponding to the given TrackID. ...
unsigned int NYCell() const
Number of cells in the y-view.
Definition: Cluster.h:108
std::vector< TrackIDE > HitsToTrackIDE(const std::vector< const rb::CellHit * > &hits, bool useBirksE=false) const
Returns vector of TrackIDE structs contributing to the given collection of hits.
unsigned int NXCell() const
Number of cells in the x-view.
Definition: Cluster.h:106
std::vector< std::pair< int, double > > cvn::GetProngPurityByPDG ( const rb::Cluster prong)

Definition at line 1238 of file AssignLabels.cxx.

References rb::Cluster::AllCells(), cheat::BackTracker::HitCollectionPurity(), cheat::BackTracker::HitsToTrackIDE(), kEmpty, kUnknown, make_pair(), rb::Cluster::NXCell(), rb::Cluster::NYCell(), simb::MCParticle::PdgCode(), and cheat::BackTracker::TrackIDToParticle().

Referenced by bpf::BPFCVNAna::analyze().

1239  {
1240 
1242 
1243  std::vector< std::pair<int, double> > puritybypdg;
1244 
1245  // Check nhits > 0 and number of associated trackIDs > 0 for the prong
1246  ProngType pType3D = kUnknown;
1247  if( prong.NXCell() == 0 ||
1248  prong.NYCell() == 0) pType3D = kEmpty;
1249 
1250 
1251  std::vector<cheat::TrackIDE> ParticleTrackIDs;
1252  if( pType3D != kEmpty )
1253  ParticleTrackIDs = bt->HitsToTrackIDE(prong.AllCells());
1254 
1255  if( ParticleTrackIDs.size() < 1 ) pType3D = kEmpty;
1256 
1257  if( pType3D != kEmpty ){
1258 
1259  for (unsigned int iID=0; iID < ParticleTrackIDs.size(); ++iID){
1260  std::set<int> TrackID;
1261  std::map<int, double> purMap;
1262  std::map<int, int> parents;
1263 
1264  int iPartID = ParticleTrackIDs[iID].trackID;
1265  TrackID.insert(iPartID);
1266  int iPartPDG = bt->TrackIDToParticle(iPartID)->PdgCode();
1267  double iPartPur = bt->HitCollectionPurity(TrackID, prong.AllCells(),
1268  &purMap, &parents,true);
1269  puritybypdg.push_back(std::make_pair(iPartPDG, iPartPur));
1270 
1271  }//iTrackID
1272  }
1273 
1274  return puritybypdg;
1275  }// ProngPurityByPDG
int PdgCode() const
Definition: MCParticle.h:211
enum cvn::PType ProngType
std::pair< Spectrum *, CheatDecomp * > make_pair(SpectrumLoaderBase &loader_data, SpectrumLoaderBase &loader_mc, HistAxis *axis, Cut *cut, const SystShifts &shift, const Var &wei)
Definition: DataMCLoad.C:336
art::PtrVector< rb::CellHit > AllCells() const
Get all cells from both views.
Definition: Cluster.cxx:180
double HitCollectionPurity(const std::set< int > &trackIDs, const std::vector< rb::WeightedHit > &whits, std::map< int, double > *purMap=0, std::map< int, int > *parents=0, bool energyPur=false) const
Returns the fraction of hits in a collection that come from the specified Geant4 track ids...
const sim::Particle * TrackIDToParticle(int const &id) const
Returns a pointer to the sim::Particle object corresponding to the given TrackID. ...
unsigned int NYCell() const
Number of cells in the y-view.
Definition: Cluster.h:108
std::vector< TrackIDE > HitsToTrackIDE(const std::vector< const rb::CellHit * > &hits, bool useBirksE=false) const
Returns vector of TrackIDE structs contributing to the given collection of hits.
unsigned int NXCell() const
Number of cells in the x-view.
Definition: Cluster.h:106
SimpleNeutrinoType cvn::GetSimpleNeutrinoType ( const InteractionType intType)

Get Interaction_t from pdg, mode and iscc. Setting pdg and mode to zero triggers cosmic ray

Definition at line 9 of file SimpleNeutrinoType.cxx.

References kCos, kCosmic, kNC, kNSimpleNeutrinoType, kNue, kNueOther, kNumu, kNumuOther, kNuNC, kNutau, and kNutauOther.

Referenced by cvn::TrainingData::FillSimpleOutputVector().

10  {
11 
12  if (intType <= kNumuOther) return kNumu;
13  if (intType <= kNueOther) return kNue;
14  if (intType <= kNutauOther) return kNutau;
15  if (intType == kNC) return kNuNC;
16  if (intType == kCosmic) return kCos;
17 
18  return kNSimpleNeutrinoType;
19 
20  }
Nutau CC, other than above.
Nutau CC QE interaction.
NC interaction.
Nue CC, other than above.
Number of types, used like a vector size.
ProngType cvn::GetTypeByPDG ( int  pdg)

Definition at line 1072 of file AssignLabels.cxx.

References kElectron, kGamma, kMuon, kNeutron, kOtherPDG, kPion, kPiZero, and kProton.

Referenced by ProngClassify().

1073  {
1074 
1075  switch (pdg) {
1076  case 11:
1077  case -11:
1078  return kElectron;
1079  case 13:
1080  case -13:
1081  return kMuon;
1082  case 2212:
1083  return kProton;
1084  case 2112:
1085  return kNeutron;
1086  case 111:
1087  return kPiZero;
1088  case 211:
1089  case -211:
1090  return kPion;
1091  case 22:
1092  return kGamma;
1093  default:
1094  return kOtherPDG;
1095  }
1096 
1097  }// GetTypeByInt
HitType cvn::HitClassify ( art::Ptr< rb::CellHit Hit,
HitType hType,
double *  hPurity 
)

Definition at line 820 of file AssignLabels.cxx.

References GetHitTypeByPDG(), cheat::BackTracker::HaveTruthInfo(), cheat::BackTracker::HitCollectionPurity(), cheat::BackTracker::HitToTrackIDE(), kEmptyHit, kMostlyEM, kMostlyHA, kMostlyMU, kUnknownHit, simb::MCParticle::PdgCode(), art::PtrVector< T >::push_back(), and cheat::BackTracker::TrackIDToParticle().

Referenced by cvn::RegPixelMapProducer::CreateMapGivenBoundary(), cvn::PixelMapProducer::CreateMapGivenBoundary(), cvn::RegPixelMapProducer::CreateMapGivenShowerVertex(), and cvn::RegPixelMapProducer::CreateMapGivenVertex().

822  {
823 
825  std::vector<cheat::TrackIDE> ParticleTrackIDs;
826 
827  *hType = kUnknownHit;
828  *hPurity = 0.0;
829 
830  HitType typeEmpty = *hType;
831  if ( !(bt->HaveTruthInfo()) ) return typeEmpty;
832 
833  // Check the hit is associated to any true particles
835  hit.push_back( Hit );
836  ParticleTrackIDs = bt->HitToTrackIDE( Hit );
837  if( ParticleTrackIDs.size() < 1 ) *hType = kEmptyHit;
838 
839  if( *hType != kEmptyHit ){
840  double totalPur = 0.0;
841  double highestPur = 0.0;
842  int highestPurPDG;
843  double fracEm = 0.0;
844  double fracHa = 0.0;
845  double fracMu = 0.0;
846 
847  for (unsigned int iID=0; iID < ParticleTrackIDs.size(); ++iID){
848  std::set<int> TrackID;
849  std::map<int, double> purMap;
850  std::map<int, int> parents;
851 
852  // Ensure we label it as the highest purity true hit
853  int iPartID = ParticleTrackIDs[iID].trackID;
854  TrackID.insert(iPartID);
855  double iPartPur = bt->HitCollectionPurity(TrackID, hit,
856  &purMap, &parents,true);
857  int iPartPDG = bt->TrackIDToParticle(iPartID)->PdgCode();
858 
859  // Keep track of what fraction is EM, Hadronic or Muon
860  switch (iPartPDG) {
861  case 11:
862  case -11:
863  case 22:
864  case 111:
865  fracEm += iPartPur;
866  break;
867  case 13:
868  case -13:
869  fracMu += iPartPur;
870  break;
871  case 2212:
872  case 2112:
873  case 211:
874  case -211:
875  fracHa += iPartPur;
876  break;
877  default:
878  fracHa += iPartPur;
879  }
880 
881  // Label hits by highest Pur contributor....*
882  if( iPartPur > highestPur ){
883  highestPur = iPartPur;
884  highestPurPDG = iPartPDG;
885  *hType = GetHitTypeByPDG(highestPurPDG);
886  *hPurity = highestPur;
887  }
888 
889  totalPur+=iPartPur; //don't need this
890 
891  }// for trackIDs
892 
893  // .... *unless that "highest" is not that high
894  if ( highestPur < 0.5 ){
895  if ( fracMu > fracEm && fracMu > fracHa )
896  *hType = kMostlyMU;
897  else{
898  if ( fracEm > fracHa )
899  *hType = kMostlyEM;
900  else
901  *hType = kMostlyHA;
902  }
903  } // ....
904 
905  }// type != empty
906 
907  HitType type = *hType;
908 
909  return type;
910 
911  }//HitClassify
int PdgCode() const
Definition: MCParticle.h:211
std::vector< TrackIDE > HitToTrackIDE(const rb::CellHit &hit, bool useBirksE=false) const
Convenience function. HitsToTrackIDE but for a single hit.
enum cvn::HType HitType
void push_back(Ptr< U > const &p)
Definition: PtrVector.h:441
double HitCollectionPurity(const std::set< int > &trackIDs, const std::vector< rb::WeightedHit > &whits, std::map< int, double > *purMap=0, std::map< int, int > *parents=0, bool energyPur=false) const
Returns the fraction of hits in a collection that come from the specified Geant4 track ids...
const sim::Particle * TrackIDToParticle(int const &id) const
Returns a pointer to the sim::Particle object corresponding to the given TrackID. ...
Definition: structs.h:12
bool HaveTruthInfo() const
Is this a file with truth info in? (Is BackTracker going to be any use to you?)
Definition: BackTracker.h:133
HitType GetHitTypeByPDG(int pdg)
int cvn::HitNuIndex ( art::Ptr< rb::CellHit Hit,
const rb::Cluster evtCluster 
)

Definition at line 968 of file AssignLabels.cxx.

References rb::Cluster::Cell(), cheat::BackTracker::HaveTruthInfo(), cheat::BackTracker::HitToTrackIDE(), rb::Cluster::NCell(), art::PtrVector< T >::push_back(), and cheat::BackTracker::SliceToNeutrinoIndex().

Referenced by cvn::PixelMapProducer::CreateMapGivenBoundary().

969  {
970 
972  std::vector<cheat::TrackIDE> ParticleTrackIDs;
973 
974  if ( !(bt->HaveTruthInfo()) ) return -5;
975 
976  // Check the hit is associated to any true particles
978  hit.push_back( Hit );
979  ParticleTrackIDs = bt->HitToTrackIDE( Hit );
980  if( ParticleTrackIDs.size() < 1 ) return 0;
981 
982  // Make vectors of the one hit and all the hits
983  const rb::CellHit* oneHit = &*Hit;
984  std::vector<const rb::CellHit*> cell_vector;
985 
986  cell_vector.push_back(oneHit);
987 
988  std::vector<const rb::CellHit*> cluster_vector;
989 
990  for ( size_t iHit = 0; iHit < evtCluster.NCell(); ++iHit )
991  {
992  art::Ptr< rb::CellHit >evtHit = evtCluster.Cell(iHit);
993 
994  const rb::CellHit* oneevtHit = &*evtHit;
995 
996  cluster_vector.push_back(oneevtHit);
997 
998  }
999 
1000  // Get indices of nus contributing to cell_vector (ordered by pur.)
1001  std::vector<int> nuIndices = bt->SliceToNeutrinoIndex(cell_vector, cluster_vector, true);
1002  if(nuIndices.empty()) return 0;
1003 
1004  return nuIndices[0] + 1; // reserve 0 for noise
1005 
1006  }//HitNuIndex
unsigned int NCell(geo::View_t view) const
Number of cells in view view.
Definition: Cluster.cxx:134
std::vector< TrackIDE > HitToTrackIDE(const rb::CellHit &hit, bool useBirksE=false) const
Convenience function. HitsToTrackIDE but for a single hit.
void push_back(Ptr< U > const &p)
Definition: PtrVector.h:441
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
A rawdata::RawDigit with channel information decoded.
Definition: CellHit.h:27
std::vector< int > SliceToNeutrinoIndex(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 neutrino indices corresponding to the v...
Definition: structs.h:12
bool HaveTruthInfo() const
Is this a file with truth info in? (Is BackTracker going to be any use to you?)
Definition: BackTracker.h:133
int cvn::HitObject ( art::Ptr< rb::CellHit Hit,
int hObjectCount,
std::map< int, int > &  hObjectMap 
)

Definition at line 914 of file AssignLabels.cxx.

References cheat::BackTracker::HaveTruthInfo(), cheat::BackTracker::HitCollectionPurity(), cheat::BackTracker::HitToTrackIDE(), maxID(), and art::PtrVector< T >::push_back().

Referenced by cvn::PixelMapProducer::CreateMapGivenBoundary().

917  {
918  int object = 0;
919 
921  std::vector<cheat::TrackIDE> ParticleTrackIDs;
922 
923  if ( !(bt->HaveTruthInfo()) ) return 0;
924 
925  // Check the hit is associated to any true particles
927  hit.push_back( Hit );
928  ParticleTrackIDs = bt->HitToTrackIDE( Hit );
929  if( ParticleTrackIDs.size() < 1 ) return 0;
930 
931  double maxPur = 0.0;
932  int maxID = 0;
933 
934  for (unsigned int iID=0; iID < ParticleTrackIDs.size(); ++iID){
935  std::set<int> TrackID;
936  std::map<int, double> purMap;
937  std::map<int, int> parents;
938 
939  int iPartID = ParticleTrackIDs[iID].trackID;
940  TrackID.insert(iPartID);
941  double iPartPur = bt->HitCollectionPurity(TrackID, hit,
942  &purMap, &parents,true);
943 
944  if(iPartPur > maxPur){
945  maxPur = iPartPur;
946  maxID = iPartID;
947  }
948 
949  }// for trackIDs
950 
951  // Label hits by highest Pur contributor....
952  if( hObjectMap.count(maxID) > 0){
953  object = hObjectMap[maxID];
954  }
955  else {
956  hObjectCount++;
957  hObjectMap[maxID] = hObjectCount;
958  object = hObjectMap[maxID];
959  }
960 
961  return object;
962 
963  }//HitObject
std::vector< TrackIDE > HitToTrackIDE(const rb::CellHit &hit, bool useBirksE=false) const
Convenience function. HitsToTrackIDE but for a single hit.
int maxID(double arrayInput[])
void push_back(Ptr< U > const &p)
Definition: PtrVector.h:441
double HitCollectionPurity(const std::set< int > &trackIDs, const std::vector< rb::WeightedHit > &whits, std::map< int, double > *purMap=0, std::map< int, int > *parents=0, bool energyPur=false) const
Returns the fraction of hits in a collection that come from the specified Geant4 track ids...
Definition: structs.h:12
bool HaveTruthInfo() const
Is this a file with truth info in? (Is BackTracker going to be any use to you?)
Definition: BackTracker.h:133
ParticlesType cvn::MakeParticleLabel ( const art::Ptr< simb::MCTruth truth,
std::string  NuType 
)

Definition at line 303 of file AssignLabels.cxx.

References abs(), simb::MCParticle::E(), energy, simb::MCTruth::GetParticle(), kOther_PT, simb::MCParticle::Mass(), simb::MCTruth::NParticles(), simb::MCParticle::PdgCode(), elec2geo::pos, fillBadChanDBTables::result, simb::MCParticle::StatusCode(), string, and registry_explorer::v.

Referenced by ParticlesSliceClassify().

304  {
305 
306  ParticlesType sType = kOther_PT;
307 
308  //int count_e,count_mu,count_g,count_pi0,count_pi,count_n,count_p;
309  //count_e=count_mu=count_g=count_pi0=count_pi=count_n=count_p=0;
310  int count_e,count_mu,count_pi0,count_pi,count_n,count_p;
311  count_e=count_mu=count_pi0=count_pi=count_n=count_p=0;
313  std::stringstream sstm;
314 
315  for (int iPart = 0; iPart < truth->NParticles(); ++iPart){
316  if (truth->GetParticle(iPart).StatusCode() != 1) continue;
317  int pdgcode = abs(truth->GetParticle(iPart).PdgCode());
318  double mass = truth->GetParticle(iPart).Mass();
319  double energy = truth->GetParticle(iPart).E(0);
320 
321  if(energy-mass<0.04) continue;
322 
323  if (pdgcode==11) count_e++;
324  if (pdgcode==13) count_mu++;
325  if (pdgcode==111) count_pi0++;
326  if (pdgcode==211) count_pi++;
327  if (pdgcode==2112) count_n++;
328  if (pdgcode==2212) count_p++;
329  }
330 
331  if (count_e>1) count_e=1; // Do not care to distinguish between events with 1 and 2 electrons
332  if (count_mu>1) count_mu=1; // Do not care to distinguish between events with 1 and 2 muons
333  if (count_pi0>1) count_pi0=2; // Above 1 pi0 it is one category
334  if (count_pi>1) count_pi=2; // Above 1 pi it is one category
335  if (count_p>1) count_p=2; // Above 1 p it is one category
336  if (count_n>1) count_n=2; // Above 1 n it is one category
337 
338  sstm << NuType << "_e_" << count_e << "_mu_" << count_mu
339  << "_pi0_" << count_pi0 << "_pi_" << count_pi << "_n_"
340  << count_n << "_p_" << count_p;
341  result = sstm.str();
342 
343  std::vector<std::string> v = {
344 "nE_e_1_mu_0_pi0_0_pi_0_n_0_p_1",
345 "nM_e_0_mu_1_pi0_0_pi_0_n_0_p_1",
346 "nM_e_0_mu_1_pi0_0_pi_1_n_0_p_1",
347 "nU_e_0_mu_0_pi0_1_pi_0_n_0_p_1",
348 "nE_e_1_mu_0_pi0_0_pi_1_n_0_p_1",
349 "nE_e_1_mu_0_pi0_0_pi_0_n_2_p_2",
350 "nU_e_0_mu_0_pi0_0_pi_1_n_0_p_1",
351 "nE_e_1_mu_0_pi0_0_pi_1_n_1_p_0",
352 "nM_e_0_mu_1_pi0_0_pi_1_n_1_p_0",
353 "nU_e_0_mu_0_pi0_0_pi_1_n_1_p_0",
354 "nU_e_0_mu_0_pi0_1_pi_0_n_1_p_0",
355 "nM_e_0_mu_1_pi0_0_pi_0_n_2_p_2",
356 "nU_e_0_mu_0_pi0_1_pi_0_n_1_p_1",
357 "nM_e_0_mu_1_pi0_0_pi_0_n_1_p_1",
358 "nE_e_1_mu_0_pi0_0_pi_0_n_1_p_1",
359 "nU_e_0_mu_0_pi0_1_pi_0_n_2_p_2",
360 "nE_e_1_mu_0_pi0_0_pi_0_n_1_p_2",
361 "nE_e_1_mu_0_pi0_0_pi_1_n_2_p_2",
362 "nM_e_0_mu_1_pi0_0_pi_1_n_1_p_1",
363 "nE_e_1_mu_0_pi0_0_pi_0_n_0_p_2",
364 "nU_e_0_mu_0_pi0_0_pi_2_n_0_p_1",
365 "nM_e_0_mu_1_pi0_0_pi_0_n_1_p_2",
366 "nU_e_0_mu_0_pi0_0_pi_0_n_2_p_2",
367 "nM_e_0_mu_1_pi0_0_pi_0_n_0_p_2",
368 "nE_e_1_mu_0_pi0_1_pi_0_n_0_p_1",
369 "nE_e_1_mu_0_pi0_0_pi_1_n_1_p_1",
370 "nU_e_0_mu_0_pi0_1_pi_1_n_1_p_0",
371 "nU_e_0_mu_0_pi0_0_pi_1_n_1_p_1",
372 "nM_e_0_mu_1_pi0_1_pi_0_n_0_p_1",
373 "nU_e_0_mu_0_pi0_0_pi_2_n_1_p_0",
374 "nU_e_0_mu_0_pi0_0_pi_1_n_2_p_2",
375 "nE_e_1_mu_0_pi0_1_pi_1_n_0_p_1",
376 "nU_e_0_mu_0_pi0_1_pi_2_n_0_p_1",
377 "nM_e_0_mu_1_pi0_0_pi_1_n_2_p_2",
378 "nE_e_1_mu_0_pi0_0_pi_2_n_0_p_1",
379 "nU_e_0_mu_0_pi0_1_pi_2_n_2_p_2",
380 "nU_e_0_mu_0_pi0_1_pi_2_n_1_p_0",
381 "nU_e_0_mu_0_pi0_1_pi_1_n_0_p_1",
382 "nU_e_0_mu_0_pi0_2_pi_2_n_0_p_1",
383 "nU_e_0_mu_0_pi0_0_pi_0_n_0_p_1",
384 "nU_e_0_mu_0_pi0_0_pi_2_n_2_p_2",
385 "nU_e_0_mu_0_pi0_0_pi_2_n_1_p_1",
386 "nM_e_0_mu_1_pi0_0_pi_1_n_0_p_2",
387 "nU_e_0_mu_0_pi0_1_pi_0_n_0_p_0",
388 "nE_e_1_mu_0_pi0_0_pi_1_n_0_p_2",
389 "nU_e_0_mu_0_pi0_0_pi_1_n_0_p_2",
390 "nT_e_0_mu_0_pi0_0_pi_2_n_0_p_1",
391 "nU_e_0_mu_0_pi0_1_pi_0_n_2_p_0",
392 "nU_e_0_mu_0_pi0_0_pi_1_n_2_p_0",
393 "nM_e_0_mu_1_pi0_1_pi_1_n_0_p_1",
394 "nE_e_1_mu_0_pi0_1_pi_2_n_0_p_1",
395 "nU_e_0_mu_0_pi0_2_pi_2_n_1_p_0",
396 "nM_e_0_mu_1_pi0_0_pi_1_n_2_p_1",
397 "nU_e_0_mu_0_pi0_1_pi_0_n_0_p_2",
398 "nU_e_0_mu_0_pi0_0_pi_1_n_2_p_1",
399 "nM_e_0_mu_1_pi0_1_pi_2_n_0_p_1",
400 "nM_e_0_mu_1_pi0_0_pi_2_n_1_p_0",
401 "nE_e_1_mu_0_pi0_0_pi_2_n_1_p_0",
402 "nU_e_0_mu_0_pi0_0_pi_0_n_1_p_0",
403 "nM_e_0_mu_1_pi0_0_pi_2_n_0_p_1",
404 "nM_e_0_mu_1_pi0_0_pi_1_n_1_p_2",
405 "nU_e_0_mu_0_pi0_2_pi_0_n_0_p_1",
406 "nU_e_0_mu_0_pi0_1_pi_1_n_2_p_2",
407 "nU_e_0_mu_0_pi0_1_pi_0_n_2_p_1",
408 "nU_e_0_mu_0_pi0_0_pi_1_n_1_p_2",
409 "nE_e_1_mu_0_pi0_1_pi_2_n_1_p_0",
410 "nE_e_1_mu_0_pi0_0_pi_0_n_2_p_1",
411 "nT_e_0_mu_0_pi0_0_pi_2_n_1_p_0",
412 "nM_e_0_mu_1_pi0_1_pi_0_n_0_p_2",
413 "nE_e_1_mu_0_pi0_0_pi_1_n_2_p_1",
414 "nU_e_0_mu_0_pi0_2_pi_2_n_1_p_1",
415 "nM_e_0_mu_1_pi0_1_pi_1_n_1_p_0",
416 "nM_e_0_mu_1_pi0_0_pi_2_n_1_p_1",
417 "nU_e_0_mu_0_pi0_0_pi_0_n_2_p_1",
418 "nM_e_0_mu_1_pi0_1_pi_0_n_2_p_2",
419 "nE_e_1_mu_0_pi0_0_pi_2_n_1_p_1",
420 "nU_e_0_mu_0_pi0_2_pi_2_n_2_p_2",
421 "nT_e_0_mu_0_pi0_2_pi_2_n_0_p_1",
422 "nM_e_0_mu_1_pi0_1_pi_1_n_1_p_1",
423 "nU_e_0_mu_0_pi0_1_pi_2_n_1_p_1",
424 "nU_e_0_mu_0_pi0_0_pi_2_n_2_p_1",
425 "nU_e_0_mu_0_pi0_0_pi_2_n_0_p_2",
426 "nM_e_0_mu_1_pi0_0_pi_0_n_2_p_1",
427 "nE_e_1_mu_0_pi0_1_pi_0_n_1_p_1",
428 "nM_e_0_mu_1_pi0_1_pi_0_n_1_p_1",
429 "nE_e_1_mu_0_pi0_1_pi_1_n_1_p_0",
430 "nE_e_1_mu_0_pi0_0_pi_2_n_2_p_2",
431 "nU_e_0_mu_0_pi0_1_pi_1_n_1_p_1",
432 "nE_e_1_mu_0_pi0_2_pi_2_n_2_p_2",
433 "nE_e_1_mu_0_pi0_2_pi_2_n_0_p_1",
434 "nE_e_1_mu_0_pi0_1_pi_1_n_1_p_1",
435 "nU_e_0_mu_0_pi0_1_pi_1_n_2_p_0",
436 "nU_e_0_mu_0_pi0_1_pi_1_n_1_p_2",
437 "nU_e_0_mu_0_pi0_0_pi_2_n_1_p_2",
438 "nU_e_0_mu_0_pi0_0_pi_0_n_1_p_2",
439 "nT_e_0_mu_0_pi0_2_pi_2_n_2_p_2",
440 "nT_e_0_mu_0_pi0_2_pi_2_n_1_p_0",
441 "nT_e_0_mu_0_pi0_1_pi_2_n_0_p_1",
442 "nM_e_0_mu_1_pi0_1_pi_2_n_1_p_0",
443 "nE_e_1_mu_0_pi0_1_pi_0_n_0_p_2",
444 "nM_e_0_mu_1_pi0_1_pi_2_n_1_p_1",
445 "nM_e_0_mu_1_pi0_0_pi_1_n_2_p_0",
446 "nU_e_0_mu_0_pi0_1_pi_2_n_2_p_0",
447 "nU_e_0_mu_0_pi0_0_pi_0_n_0_p_0",
448 "nT_e_0_mu_0_pi0_1_pi_2_n_1_p_0",
449 "nM_e_0_mu_1_pi0_2_pi_2_n_0_p_1",
450 "nE_e_1_mu_0_pi0_0_pi_2_n_1_p_2",
451 "nE_e_1_mu_0_pi0_0_pi_1_n_0_p_0",
452 "nU_e_0_mu_0_pi0_2_pi_1_n_2_p_2",
453 "nU_e_0_mu_0_pi0_2_pi_1_n_0_p_1",
454 "nT_e_0_mu_0_pi0_0_pi_2_n_1_p_1",
455 "nM_e_0_mu_1_pi0_0_pi_2_n_0_p_2",
456 "nE_e_1_mu_0_pi0_2_pi_2_n_1_p_0",
457 "nE_e_1_mu_0_pi0_0_pi_1_n_1_p_2",
458 "nU_e_0_mu_0_pi0_2_pi_0_n_2_p_2",
459 "nU_e_0_mu_0_pi0_0_pi_2_n_2_p_0",
460 "nU_e_0_mu_0_pi0_0_pi_0_n_1_p_1",
461 "nM_e_0_mu_1_pi0_1_pi_2_n_0_p_2",
462 "nM_e_0_mu_1_pi0_0_pi_1_n_0_p_0",
463 "nE_e_1_mu_0_pi0_1_pi_0_n_2_p_2",
464 "nU_e_0_mu_0_pi0_2_pi_2_n_0_p_2",
465 "nU_e_0_mu_0_pi0_1_pi_1_n_0_p_2",
466 "nM_e_0_mu_1_pi0_1_pi_2_n_2_p_0",
467 "nM_e_0_mu_1_pi0_0_pi_2_n_2_p_2",
468 "nE_e_1_mu_0_pi0_0_pi_1_n_2_p_0",
469 "nU_e_0_mu_0_pi0_2_pi_0_n_1_p_1",
470 "nM_e_0_mu_1_pi0_2_pi_2_n_2_p_2",
471 "nE_e_1_mu_0_pi0_1_pi_2_n_2_p_2",
472 "nE_e_1_mu_0_pi0_1_pi_2_n_2_p_1",
473 "nE_e_1_mu_0_pi0_0_pi_0_n_1_p_0",
474 "nU_e_0_mu_0_pi0_2_pi_2_n_2_p_0",
475 "nU_e_0_mu_0_pi0_2_pi_0_n_1_p_0",
476 "nU_e_0_mu_0_pi0_1_pi_2_n_2_p_1",
477 "nU_e_0_mu_0_pi0_1_pi_2_n_1_p_2",
478 "nU_e_0_mu_0_pi0_1_pi_1_n_2_p_1",
479 "nU_e_0_mu_0_pi0_0_pi_0_n_2_p_0",
480 "nT_e_0_mu_0_pi0_0_pi_1_n_0_p_1",
481 "nM_e_0_mu_1_pi0_1_pi_2_n_2_p_2",
482 "nM_e_0_mu_1_pi0_0_pi_0_n_1_p_0",
483 "nE_e_1_mu_0_pi0_2_pi_1_n_0_p_1",
484 "nE_e_1_mu_0_pi0_1_pi_1_n_2_p_2",
485 "nE_e_1_mu_0_pi0_1_pi_0_n_1_p_2",
486 "nU_e_0_mu_0_pi0_1_pi_0_n_1_p_2",
487 "nU_e_0_mu_0_pi0_0_pi_2_n_0_p_0",
488 "nT_e_0_mu_0_pi0_1_pi_2_n_2_p_2",
489 "nT_e_0_mu_0_pi0_0_pi_2_n_2_p_2",
490 "nM_e_0_mu_1_pi0_2_pi_2_n_1_p_0",
491 "nM_e_0_mu_1_pi0_1_pi_1_n_0_p_2",
492 "nM_e_0_mu_1_pi0_1_pi_0_n_1_p_2",
493 "nE_e_1_mu_0_pi0_1_pi_2_n_1_p_2",
494 "nE_e_1_mu_0_pi0_1_pi_1_n_0_p_2",
495 "nU_e_0_mu_0_pi0_2_pi_1_n_1_p_0",
496 "nT_e_0_mu_1_pi0_0_pi_0_n_0_p_1",
497 "nM_e_0_mu_1_pi0_2_pi_2_n_1_p_1",
498 "nM_e_0_mu_1_pi0_2_pi_1_n_0_p_1",
499 "nM_e_0_mu_1_pi0_1_pi_1_n_2_p_2",
500 "nM_e_0_mu_1_pi0_1_pi_1_n_1_p_2",
501 "nM_e_0_mu_1_pi0_0_pi_2_n_2_p_1",
502 "nE_e_1_mu_0_pi0_2_pi_1_n_2_p_2",
503 "nE_e_1_mu_0_pi0_0_pi_2_n_0_p_2",
504 "nE_e_1_mu_0_pi0_0_pi_0_n_0_p_0",
505 "nU_e_0_mu_0_pi0_2_pi_2_n_2_p_1",
506 "nU_e_0_mu_0_pi0_2_pi_2_n_1_p_2",
507 "nU_e_0_mu_0_pi0_2_pi_1_n_2_p_1",
508 "nU_e_0_mu_0_pi0_2_pi_0_n_1_p_2",
509 "nU_e_0_mu_0_pi0_1_pi_2_n_0_p_2",
510 "nU_e_0_mu_0_pi0_0_pi_0_n_0_p_2",
511 "nM_e_0_mu_1_pi0_2_pi_0_n_0_p_1",
512 "nE_e_1_mu_0_pi0_2_pi_2_n_1_p_1",
513 "nE_e_1_mu_0_pi0_2_pi_0_n_0_p_1",
514 "nE_e_1_mu_0_pi0_1_pi_1_n_2_p_1",
515 "nT_e_0_mu_1_pi0_0_pi_1_n_0_p_1",
516 "nM_e_0_mu_1_pi0_2_pi_0_n_0_p_2",
517 "nM_e_0_mu_1_pi0_0_pi_2_n_2_p_0",
518 "nM_e_0_mu_1_pi0_0_pi_2_n_1_p_2",
519 "nE_e_1_mu_0_pi0_2_pi_2_n_2_p_1",
520 "nE_e_1_mu_0_pi0_2_pi_2_n_0_p_2",
521 "nE_e_1_mu_0_pi0_1_pi_2_n_0_p_2",
522 "nE_e_1_mu_0_pi0_1_pi_1_n_1_p_2",
523 "nT_e_0_mu_0_pi0_1_pi_1_n_0_p_1",
524 "nT_e_0_mu_0_pi0_0_pi_2_n_0_p_2",
525 "nM_e_0_mu_1_pi0_1_pi_2_n_2_p_1",
526 "nE_e_1_mu_0_pi0_2_pi_0_n_0_p_2",
527 "nE_e_1_mu_0_pi0_1_pi_0_n_2_p_1",
528 "nE_e_1_mu_0_pi0_0_pi_2_n_2_p_0",
529 "nE_e_1_mu_0_pi0_0_pi_0_n_2_p_0",
530 "nU_e_0_mu_0_pi0_2_pi_1_n_1_p_1",
531 "nT_e_0_mu_1_pi0_0_pi_1_n_1_p_0",
532 "nT_e_0_mu_0_pi0_0_pi_2_n_2_p_0",
533 "nM_e_0_mu_1_pi0_1_pi_2_n_1_p_2",
534 "nE_e_1_mu_0_pi0_2_pi_2_n_1_p_2",
535 "nE_e_1_mu_0_pi0_2_pi_1_n_1_p_0",
536 "nU_e_0_mu_0_pi0_2_pi_0_n_2_p_1",
537 "nU_e_0_mu_0_pi0_1_pi_2_n_0_p_0",
538 "nT_e_1_mu_0_pi0_0_pi_1_n_1_p_0",
539 "nT_e_1_mu_0_pi0_0_pi_1_n_0_p_1",
540 "nT_e_0_mu_0_pi0_2_pi_2_n_0_p_2",
541 "nT_e_0_mu_0_pi0_2_pi_1_n_0_p_1",
542 "nT_e_0_mu_0_pi0_1_pi_2_n_1_p_1",
543 "nM_e_0_mu_1_pi0_2_pi_2_n_0_p_2",
544 "nM_e_0_mu_1_pi0_2_pi_1_n_1_p_0",
545 "nE_e_1_mu_0_pi0_1_pi_2_n_1_p_1",
546 "nE_e_1_mu_0_pi0_0_pi_2_n_0_p_0",
547 "nU_e_0_mu_0_pi0_2_pi_1_n_2_p_0",
548 "nU_e_0_mu_0_pi0_2_pi_1_n_0_p_2",
549 "nU_e_0_mu_0_pi0_2_pi_0_n_2_p_0",
550 "nT_e_1_mu_0_pi0_1_pi_2_n_1_p_0",
551 "nT_e_1_mu_0_pi0_1_pi_2_n_0_p_1",
552 "nT_e_1_mu_0_pi0_0_pi_0_n_0_p_1",
553 "nT_e_0_mu_1_pi0_0_pi_2_n_2_p_2",
554 "nT_e_0_mu_1_pi0_0_pi_2_n_0_p_1",
555 "nT_e_0_mu_0_pi0_2_pi_2_n_1_p_1",
556 "nT_e_0_mu_0_pi0_1_pi_2_n_2_p_1",
557 "nT_e_0_mu_0_pi0_1_pi_2_n_1_p_2",
558 "nT_e_0_mu_0_pi0_0_pi_2_n_1_p_2",
559 "nT_e_0_mu_0_pi0_0_pi_2_n_0_p_0",
560 "nT_e_0_mu_0_pi0_0_pi_1_n_2_p_2",
561 "nM_e_0_mu_1_pi0_2_pi_1_n_0_p_2",
562 "nM_e_0_mu_1_pi0_1_pi_1_n_2_p_1",
563 "nM_e_0_mu_1_pi0_1_pi_1_n_2_p_0",
564 "nM_e_0_mu_1_pi0_1_pi_0_n_1_p_0",
565 "nM_e_0_mu_1_pi0_0_pi_2_n_0_p_0",
566 "nE_e_1_mu_0_pi0_2_pi_1_n_1_p_2",
567 "nE_e_1_mu_0_pi0_2_pi_1_n_1_p_1",
568 "nE_e_1_mu_0_pi0_2_pi_1_n_0_p_2",
569 "nE_e_1_mu_0_pi0_2_pi_0_n_1_p_1",
570 "nE_e_1_mu_0_pi0_0_pi_2_n_2_p_1",
571 "nU_e_0_mu_0_pi0_2_pi_2_n_0_p_0",
572 "nT_e_1_mu_0_pi0_0_pi_2_n_0_p_1",
573 "nT_e_1_mu_0_pi0_0_pi_0_n_1_p_1",
574 "nT_e_0_mu_0_pi0_2_pi_2_n_0_p_0",
575 "nM_e_0_mu_1_pi0_2_pi_2_n_2_p_0",
576 "nM_e_0_mu_1_pi0_2_pi_1_n_2_p_2",
577 "nM_e_0_mu_1_pi0_2_pi_1_n_1_p_2",
578 "nM_e_0_mu_1_pi0_2_pi_1_n_1_p_1",
579 "nM_e_0_mu_1_pi0_2_pi_0_n_2_p_2",
580 "nM_e_0_mu_1_pi0_2_pi_0_n_1_p_2",
581 "nE_e_1_mu_0_pi0_2_pi_2_n_2_p_0",
582 "nE_e_1_mu_0_pi0_2_pi_0_n_2_p_2",
583 "nE_e_1_mu_0_pi0_2_pi_0_n_2_p_1",
584 "nE_e_1_mu_0_pi0_2_pi_0_n_1_p_2",
585 "nE_e_1_mu_0_pi0_1_pi_2_n_2_p_0",
586 "nU_e_0_mu_0_pi0_2_pi_1_n_1_p_2",
587 "nU_e_0_mu_0_pi0_1_pi_1_n_0_p_0",
588 "nU_e_0_mu_0_pi0_0_pi_1_n_0_p_0",
589 "nT_e_1_mu_0_pi0_1_pi_2_n_1_p_2",
590 "nT_e_1_mu_0_pi0_0_pi_2_n_2_p_0",
591 "nT_e_1_mu_0_pi0_0_pi_1_n_2_p_2",
592 "nT_e_0_mu_1_pi0_2_pi_2_n_1_p_0",
593 "nT_e_0_mu_1_pi0_2_pi_2_n_0_p_1",
594 "nT_e_0_mu_1_pi0_1_pi_2_n_0_p_1",
595 "nT_e_0_mu_1_pi0_1_pi_0_n_0_p_1",
596 "nT_e_0_mu_1_pi0_0_pi_2_n_1_p_0",
597 "nT_e_0_mu_1_pi0_0_pi_2_n_0_p_2",
598 "nT_e_0_mu_1_pi0_0_pi_0_n_2_p_2",
599 "nT_e_0_mu_1_pi0_0_pi_0_n_0_p_2",
600 "nT_e_0_mu_0_pi0_2_pi_2_n_2_p_0",
601 "nT_e_0_mu_0_pi0_2_pi_2_n_1_p_2",
602 "nT_e_0_mu_0_pi0_2_pi_1_n_0_p_2",
603 "nT_e_0_mu_0_pi0_1_pi_2_n_0_p_2",
604 "nT_e_0_mu_0_pi0_1_pi_1_n_1_p_2",
605 "nT_e_0_mu_0_pi0_1_pi_1_n_1_p_1",
606 "nT_e_0_mu_0_pi0_1_pi_1_n_0_p_2",
607 "nT_e_0_mu_0_pi0_0_pi_1_n_1_p_2",
608 "nT_e_0_mu_0_pi0_0_pi_1_n_0_p_0",
609 "nM_e_0_mu_1_pi0_2_pi_2_n_2_p_1",
610 "nM_e_0_mu_1_pi0_2_pi_2_n_1_p_2",
611 "nM_e_0_mu_1_pi0_2_pi_0_n_1_p_1",
612 "nM_e_0_mu_1_pi0_1_pi_0_n_2_p_1",
613 "nM_e_0_mu_1_pi0_1_pi_0_n_0_p_0",
614 "nM_e_0_mu_1_pi0_0_pi_0_n_0_p_0",
615 "nE_e_1_mu_0_pi0_1_pi_2_n_0_p_0",
616 "nU_e_0_mu_0_pi0_2_pi_0_n_0_p_2",
617 "nT_e_1_mu_0_pi0_1_pi_0_n_0_p_1",
618 "nT_e_1_mu_0_pi0_0_pi_0_n_0_p_0",
619 "nT_e_0_mu_1_pi0_1_pi_2_n_2_p_2",
620 "nT_e_0_mu_1_pi0_1_pi_1_n_1_p_0",
621 "nT_e_0_mu_0_pi0_2_pi_2_n_2_p_1",
622 "nT_e_0_mu_0_pi0_1_pi_1_n_2_p_2",
623 "nT_e_0_mu_0_pi0_1_pi_1_n_1_p_0",
624 "nT_e_0_mu_0_pi0_0_pi_1_n_1_p_1",
625 "nT_e_0_mu_0_pi0_0_pi_1_n_0_p_2",
626 "nM_e_0_mu_1_pi0_2_pi_1_n_2_p_1",
627 "nM_e_0_mu_1_pi0_2_pi_1_n_2_p_0",
628 "nM_e_0_mu_1_pi0_1_pi_2_n_0_p_0",
629 "nM_e_0_mu_1_pi0_0_pi_0_n_2_p_0",
630 "nE_e_1_mu_0_pi0_2_pi_1_n_2_p_1",
631 "nE_e_1_mu_0_pi0_1_pi_1_n_2_p_0",
632 "nE_e_1_mu_0_pi0_1_pi_1_n_0_p_0",
633 "nE_e_1_mu_0_pi0_1_pi_0_n_0_p_0",
634 "nU_e_1_mu_0_pi0_0_pi_2_n_1_p_1",
635 "nU_e_0_mu_0_pi0_2_pi_1_n_0_p_0",
636 "nT_e_1_mu_0_pi0_2_pi_2_n_1_p_1",
637 "nT_e_1_mu_0_pi0_2_pi_2_n_1_p_0",
638 "nT_e_1_mu_0_pi0_2_pi_2_n_0_p_1",
639 "nT_e_1_mu_0_pi0_2_pi_1_n_1_p_1",
640 "nT_e_1_mu_0_pi0_1_pi_2_n_1_p_1",
641 "nT_e_1_mu_0_pi0_1_pi_2_n_0_p_2",
642 "nT_e_1_mu_0_pi0_1_pi_1_n_1_p_1",
643 "nT_e_1_mu_0_pi0_1_pi_1_n_0_p_1",
644 "nT_e_1_mu_0_pi0_0_pi_0_n_2_p_2",
645 "nT_e_0_mu_1_pi0_2_pi_2_n_2_p_2",
646 "nT_e_0_mu_1_pi0_2_pi_2_n_2_p_1",
647 "nT_e_0_mu_1_pi0_2_pi_0_n_1_p_2",
648 "nT_e_0_mu_1_pi0_1_pi_2_n_1_p_1",
649 "nT_e_0_mu_1_pi0_1_pi_2_n_1_p_0",
650 "nT_e_0_mu_1_pi0_1_pi_0_n_2_p_2",
651 "nT_e_0_mu_1_pi0_1_pi_0_n_2_p_1",
652 "nT_e_0_mu_1_pi0_0_pi_2_n_1_p_1",
653 "nT_e_0_mu_1_pi0_0_pi_1_n_2_p_2",
654 "nT_e_0_mu_1_pi0_0_pi_1_n_2_p_0",
655 "nT_e_0_mu_1_pi0_0_pi_1_n_1_p_2",
656 "nT_e_0_mu_1_pi0_0_pi_1_n_1_p_1",
657 "nT_e_0_mu_1_pi0_0_pi_0_n_1_p_1",
658 "nT_e_0_mu_0_pi0_2_pi_1_n_2_p_2",
659 "nT_e_0_mu_0_pi0_1_pi_2_n_2_p_0",
660 "nT_e_0_mu_0_pi0_1_pi_2_n_0_p_0",
661 "nT_e_0_mu_0_pi0_1_pi_1_n_2_p_0",
662 "nT_e_0_mu_0_pi0_0_pi_2_n_2_p_1",
663 "nT_e_0_mu_0_pi0_0_pi_1_n_2_p_1",
664 "nT_e_0_mu_0_pi0_0_pi_1_n_2_p_0",
665 "nT_e_0_mu_0_pi0_0_pi_1_n_1_p_0",
666 "nM_e_1_mu_1_pi0_0_pi_1_n_0_p_1",
667 "nM_e_0_mu_1_pi0_1_pi_1_n_0_p_0",
668 "nE_e_1_mu_0_pi0_2_pi_1_n_0_p_0",
669 "nU_e_1_mu_0_pi0_0_pi_0_n_0_p_0",
670 "nT_e_1_mu_0_pi0_2_pi_2_n_2_p_2",
671 "nT_e_1_mu_0_pi0_2_pi_2_n_0_p_2",
672 "nT_e_1_mu_0_pi0_2_pi_1_n_1_p_2",
673 "nT_e_1_mu_0_pi0_2_pi_1_n_1_p_0",
674 "nT_e_1_mu_0_pi0_2_pi_1_n_0_p_1",
675 "nT_e_1_mu_0_pi0_2_pi_1_n_0_p_0",
676 "nT_e_1_mu_0_pi0_2_pi_0_n_1_p_1",
677 "nT_e_1_mu_0_pi0_2_pi_0_n_0_p_1",
678 "nT_e_1_mu_0_pi0_1_pi_1_n_2_p_2",
679 "nT_e_1_mu_0_pi0_1_pi_1_n_1_p_2",
680 "nT_e_1_mu_0_pi0_1_pi_1_n_1_p_0",
681 "nT_e_1_mu_0_pi0_1_pi_0_n_2_p_2",
682 "nT_e_1_mu_0_pi0_1_pi_0_n_2_p_1",
683 "nT_e_1_mu_0_pi0_1_pi_0_n_1_p_1",
684 "nT_e_1_mu_0_pi0_1_pi_0_n_0_p_2",
685 "nT_e_1_mu_0_pi0_0_pi_2_n_2_p_1",
686 "nT_e_1_mu_0_pi0_0_pi_2_n_1_p_2",
687 "nT_e_1_mu_0_pi0_0_pi_2_n_1_p_0",
688 "nT_e_1_mu_0_pi0_0_pi_2_n_0_p_0",
689 "nT_e_1_mu_0_pi0_0_pi_1_n_2_p_1",
690 "nT_e_1_mu_0_pi0_0_pi_1_n_2_p_0",
691 "nT_e_1_mu_0_pi0_0_pi_1_n_1_p_1",
692 "nT_e_1_mu_0_pi0_0_pi_0_n_2_p_1",
693 "nT_e_1_mu_0_pi0_0_pi_0_n_1_p_2",
694 "nT_e_1_mu_0_pi0_0_pi_0_n_1_p_0",
695 "nT_e_1_mu_0_pi0_0_pi_0_n_0_p_2",
696 "nT_e_0_mu_1_pi0_2_pi_2_n_2_p_0",
697 "nT_e_0_mu_1_pi0_2_pi_2_n_1_p_2",
698 "nT_e_0_mu_1_pi0_2_pi_2_n_1_p_1",
699 "nT_e_0_mu_1_pi0_2_pi_2_n_0_p_2",
700 "nT_e_0_mu_1_pi0_2_pi_1_n_1_p_0",
701 "nT_e_0_mu_1_pi0_2_pi_1_n_0_p_1",
702 "nT_e_0_mu_1_pi0_2_pi_0_n_2_p_2",
703 "nT_e_0_mu_1_pi0_2_pi_0_n_0_p_1",
704 "nT_e_0_mu_1_pi0_1_pi_2_n_1_p_2",
705 "nT_e_0_mu_1_pi0_1_pi_2_n_0_p_2",
706 "nT_e_0_mu_1_pi0_1_pi_1_n_2_p_1",
707 "nT_e_0_mu_1_pi0_1_pi_1_n_0_p_1",
708 "nT_e_0_mu_1_pi0_0_pi_2_n_2_p_0",
709 "nT_e_0_mu_1_pi0_0_pi_2_n_1_p_2",
710 "nT_e_0_mu_1_pi0_0_pi_1_n_2_p_1",
711 "nT_e_0_mu_1_pi0_0_pi_1_n_0_p_2",
712 "nT_e_0_mu_1_pi0_0_pi_0_n_1_p_2",
713 "nT_e_0_mu_0_pi0_2_pi_1_n_1_p_2",
714 "nT_e_0_mu_0_pi0_2_pi_1_n_1_p_1",
715 "nT_e_0_mu_0_pi0_2_pi_1_n_0_p_0",
716 "nT_e_0_mu_0_pi0_2_pi_0_n_1_p_2",
717 "nT_e_0_mu_0_pi0_1_pi_1_n_2_p_1",
718 "nT_e_0_mu_0_pi0_1_pi_0_n_0_p_1",
719 "nT_e_0_mu_0_pi0_0_pi_0_n_0_p_1",
720 "nM_e_0_mu_1_pi0_2_pi_2_n_0_p_0",
721 "nM_e_0_mu_1_pi0_2_pi_0_n_2_p_1",
722 "nM_e_0_mu_1_pi0_2_pi_0_n_2_p_0",
723 "nM_e_0_mu_1_pi0_2_pi_0_n_0_p_0",
724 "nM_e_0_mu_1_pi0_1_pi_0_n_2_p_0",
725 "nE_e_1_mu_1_pi0_1_pi_0_n_1_p_0",
726 "nE_e_1_mu_0_pi0_2_pi_2_n_0_p_0",
727 "nE_e_1_mu_0_pi0_2_pi_1_n_2_p_0",
728 "nE_e_1_mu_0_pi0_2_pi_0_n_2_p_0",
729 "nE_e_1_mu_0_pi0_1_pi_0_n_2_p_0",
730 "nE_e_1_mu_0_pi0_1_pi_0_n_1_p_0",
731 "nM_Other",
732 "nE_Other",
733 "nT_Other",
734 "kCosmic_PT",
735 "kOther_PT"};
736 
737  int pos;
738  if (std::find(v.begin(), v.end(), result) != v.end()){
739  pos = std::find(v.begin(), v.end(), result) - v.begin();
740  sType = ParticlesType(pos);
741  }
742  else{
743  result = NuType + "_Other";
744  if (std::find(v.begin(), v.end(), result) != v.end()){
745  pos = std::find(v.begin(), v.end(), result) - v.begin();
746  sType = ParticlesType(pos);
747  }
748  }
749 
750  return sType;
751  }
double E(const int i=0) const
Definition: MCParticle.h:232
int PdgCode() const
Definition: MCParticle.h:211
double Mass() const
Definition: MCParticle.h:238
void abs(TH1 *hist)
int StatusCode() const
Definition: MCParticle.h:210
int NParticles() const
Definition: MCTruth.h:74
Whatever is left.
double energy
Definition: plottest35.C:25
enum cvn::Particles ParticlesType
const simb::MCParticle & GetParticle(int i) const
Definition: MCTruth.h:75
enum BeamMode string
std::ostream & cvn::operator<< ( std::ostream &  os,
const Boundary b 
)

Definition at line 49 of file Boundary.cxx.

References cvn::Boundary::FirstCell(), cvn::Boundary::FirstPlane(), cvn::Boundary::LastCell(), and cvn::Boundary::LastPlane().

50  {
51  os<<"Boundary with "
52  <<"(first,last) plane: (" << b.FirstPlane()<<", "<< b.LastPlane()
53  <<"), (first,last) cell even: ("<<b.FirstCell(0)<<", "<<b.LastCell(0)<<")"
54  <<"), (first,last) cell odd: ("<<b.FirstCell(1)<<", "<<b.LastCell(1)<<")";
55 
56  return os;
57  }
const hit & b
Definition: hits.cxx:21
std::ostream& cvn::operator<< ( std::ostream &  os,
const PixelMapProducer p 
)

Definition at line 115 of file PixelMapProducer.cxx.

References cvn::PixelMapProducer::NCell(), and cvn::PixelMapProducer::NPlane().

116  {
117  os << "PixelMapProducer: "
118  << p.NCell() <<" cells X " << p.NPlane() << " planes";
119  return os;
120  }
const char * p
Definition: xmltok.h:285
std::ostream& cvn::operator<< ( std::ostream &  os,
const RegPixelMapProducer p 
)

Definition at line 226 of file RegPixelMapProducer.cxx.

References cvn::RegPixelMapProducer::NCell(), and cvn::RegPixelMapProducer::NPlane().

227  {
228  os << "RegPixelMapProducer: "
229  << p.NCell() <<" cells X " << p.NPlane() << " planes";
230  return os;
231  }
const char * p
Definition: xmltok.h:285
std::ostream & cvn::operator<< ( std::ostream &  os,
const RegPixelMap m 
)

Definition at line 298 of file RegPixelMap.cxx.

References cvn::RegPixelMap::NCell(), cvn::RegPixelMap::NPixel(), and cvn::RegPixelMap::NPlane().

299  {
300  os << "RegPixelMap with " << m.NPixel() << " pixels, "
301  << m.NPlane() << " planes"
302  << " by " << m.NCell() << " cells" ;
303  return os;
304  }
std::ostream & cvn::operator<< ( std::ostream &  os,
const PixelMap m 
)

Definition at line 387 of file PixelMap.cxx.

References cvn::PixelMap::NCell(), cvn::PixelMap::NPixel(), and cvn::PixelMap::NPlane().

388  {
389  os << "PixelMap with " << m.NPixel() << " pixels, "
390  << m.NPlane() << " planes"
391  << " by " << m.NCell() << " cells" ;
392  return os;
393  }
ParticlesType cvn::ParticlesSliceClassify ( const art::Ptr< simb::MCTruth truth,
const rb::Cluster slice,
float &  nuEnergy,
float &  lepEnergy,
double &  vtxx,
double &  vtxy,
double &  vtxz 
)

Definition at line 753 of file AssignLabels.cxx.

References abs(), simb::MCNeutrino::CCNC(), simb::MCParticle::E(), simb::MCTruth::GetNeutrino(), simb::kCC, kCosmic_PT, simb::MCNeutrino::Lepton(), MakeParticleLabel(), simb::MCTruth::NeutrinoSet(), simb::MCNeutrino::Nu(), simb::MCParticle::PdgCode(), string, simb::MCParticle::Vx(), simb::MCParticle::Vy(), and simb::MCParticle::Vz().

Referenced by cvn::CVNEventDump::analyze(), cvn::CVNCosmicEventDump::analyze(), and cvn::CVNAddTrainingData::produce().

756  {
757 
758  //std::cout << "I am here" << std::endl;
759  if(!truth->NeutrinoSet()) return kCosmic_PT;
760 
761  // get nu energy
762  const simb::MCNeutrino& nu = truth->GetNeutrino();
763 
764  std::string NuType;
765  bool nuIsCC = nu.CCNC() == simb::kCC;
766  if (nuIsCC){
767 
768  if (abs(nu.Nu().PdgCode()) == 14){
769  NuType = "nM";
770  }
771  else if (abs(nu.Nu().PdgCode()) == 12){
772  NuType = "nE";
773  }
774  else if (abs(nu.Nu().PdgCode()) == 16){
775  NuType = "nT";
776  }
777 
778  } // close CC if check
779 
780  else{
781  NuType = "nU";
782  } // close NC if check
783 
784  nuEnergy = nu.Nu().E();
785  lepEnergy = nu.Lepton().E();
786  vtxx = nu.Nu().Vx();
787  vtxy = nu.Nu().Vy();
788  vtxz = nu.Nu().Vz();
789  return MakeParticleLabel(truth, NuType);
790 }
double E(const int i=0) const
Definition: MCParticle.h:232
ParticlesType MakeParticleLabel(const art::Ptr< simb::MCTruth > truth, std::string NuType)
int PdgCode() const
Definition: MCParticle.h:211
int CCNC() const
Definition: MCNeutrino.h:148
const simb::MCNeutrino & GetNeutrino() const
Definition: MCTruth.h:76
const simb::MCParticle & Nu() const
Definition: MCNeutrino.h:146
float vtxx
void abs(TH1 *hist)
const simb::MCParticle & Lepton() const
Definition: MCNeutrino.h:147
float vtxy
double Vx(const int i=0) const
Definition: MCParticle.h:220
float vtxz
double Vz(const int i=0) const
Definition: MCParticle.h:222
bool NeutrinoSet() const
Definition: MCTruth.h:77
Event generator information.
Definition: MCNeutrino.h:18
double Vy(const int i=0) const
Definition: MCParticle.h:221
enum BeamMode string
ProngType cvn::ProngClassify ( const rb::Prong prong,
ProngType pType3D,
ProngType pTypeX,
ProngType pTypeY,
bool *  isprimary,
double *  purity3D,
double *  purityX,
double *  purityY,
double *  recE,
unsigned int ncellX,
unsigned int ncellY 
)

Definition at line 1101 of file AssignLabels.cxx.

References rb::Cluster::AllCells(), GetTypeByPDG(), cheat::BackTracker::HitCollectionPurity(), cheat::BackTracker::HitsToTrackIDE(), sim::ParticleNavigator::IsPrimary(), kEmpty, kUnknown, rb::Cluster::NXCell(), rb::Cluster::NYCell(), cheat::BackTracker::ParticleNavigator(), simb::MCParticle::PdgCode(), rb::Cluster::TotalGeV(), cheat::BackTracker::TrackIDToParticle(), rb::Cluster::XCells(), and rb::Cluster::YCells().

Referenced by cvn::CVNEventProngDump::analyze(), bpf::BPFCVNAna::analyze(), and cvn::CVNAddTrainingData::produce().

1105  {
1106 
1107  *isprimary = false;
1108 
1109  *pType3D = kUnknown;
1110  *pTypeX = kUnknown;
1111  *pTypeY = kUnknown;
1112 
1113  *purity3D = 0.0;
1114  *purityX = 0.0;
1115  *purityY = 0.0;
1116  *purityY = 0.0;
1117 
1118  *ncellX = prong.NXCell();
1119  *ncellY = prong.NYCell();
1120 
1121  *recE = prong.TotalGeV();
1122 
1123  if( prong.NXCell() == 0 ||
1124  prong.NYCell() == 0) *pType3D = kEmpty;
1125  if( prong.NXCell() == 0 ) *pTypeX = kEmpty;
1126  if( prong.NYCell() == 0 ) *pTypeY = kEmpty;
1127 
1129 
1130  const sim::ParticleNavigator& pnav = bt->ParticleNavigator();
1131 
1132  std::vector<cheat::TrackIDE> ParticleTrackIDs, ParticleTrackIDsX,
1133  ParticleTrackIDsY;
1134 
1135  if( *pType3D != kEmpty )
1136  ParticleTrackIDs = bt->HitsToTrackIDE(prong.AllCells());
1137  if( *pTypeX != kEmpty )
1138  ParticleTrackIDsX = bt->HitsToTrackIDE(prong.XCells());
1139  if( *pTypeY != kEmpty )
1140  ParticleTrackIDsY = bt->HitsToTrackIDE(prong.YCells());
1141 
1142  if( ParticleTrackIDs.size() < 1 ) *pType3D = kEmpty;
1143  if( ParticleTrackIDsX.size() < 1 ) *pTypeX = kEmpty;
1144  if( ParticleTrackIDsY.size() < 1 ) *pTypeY = kEmpty;
1145 
1146  if( *pType3D != kEmpty ){
1147  double totalPur = 0.0;
1148  double highestPur = 0.0;
1149  //int highestPurID;
1150  int highestPurPDG;
1151  for (unsigned int iID=0; iID < ParticleTrackIDs.size(); ++iID){
1152  std::set<int> TrackID;
1153  std::map<int, double> purMap;
1154  std::map<int, int> parents;
1155 
1156  int iPartID = ParticleTrackIDs[iID].trackID;
1157  TrackID.insert(iPartID);
1158  double iPartPur = bt->HitCollectionPurity(TrackID, prong.AllCells(),
1159  &purMap, &parents,true);
1160 
1161  if( iPartPur > highestPur ){
1162  highestPur = iPartPur;
1163  //highestPurID = iPartID;
1164  highestPurPDG = bt->TrackIDToParticle(iPartID)->PdgCode();
1165  *pType3D = GetTypeByPDG(highestPurPDG);
1166  *purity3D = highestPur;
1167  *isprimary = pnav.IsPrimary(iPartID);
1168  }
1169 
1170  totalPur+=iPartPur;
1171  }
1172 
1173  }
1174 
1175  if( *pTypeX != kEmpty ){
1176  double totalPurX = 0.0;
1177  double highestPurX = 0.0;
1178  // int highestPurIDX;
1179  int highestPurPDGx;
1180  for (unsigned int ixID=0; ixID < ParticleTrackIDsX.size(); ++ixID){
1181  std::set<int> TrackID;
1182  std::map<int, double> purMap;
1183  std::map<int, int> parents;
1184 
1185  int ixPartID = ParticleTrackIDsX[ixID].trackID;
1186  TrackID.insert(ixPartID);
1187  double ixPartPur = bt->HitCollectionPurity(TrackID, prong.XCells(),
1188  &purMap, &parents,true);
1189 
1190  if( ixPartPur > highestPurX ){
1191  highestPurX = ixPartPur;
1192  //highestPurIDX = ixPartID;
1193  highestPurPDGx = bt->TrackIDToParticle(ixPartID)->PdgCode();
1194  *pTypeX = GetTypeByPDG(highestPurPDGx);
1195  *purityX = highestPurX;
1196  }
1197 
1198  totalPurX+=ixPartPur;
1199  }
1200 
1201  }
1202  if( *pTypeY != kEmpty ){
1203  double totalPurY = 0.0;
1204  double highestPurY = 0.0;
1205  // int highestPurIDY;
1206  int highestPurPDGy;
1207  for (unsigned int iyID=0; iyID < ParticleTrackIDsY.size(); ++iyID){
1208  std::set<int> TrackID;
1209  std::map<int, double> purMap;
1210  std::map<int, int> parents;
1211 
1212  int iyPartID = ParticleTrackIDsY[iyID].trackID;
1213  TrackID.insert(iyPartID);
1214  double iyPartPur = bt->HitCollectionPurity(TrackID, prong.YCells(), &purMap,
1215  &parents,true);
1216 
1217  if( iyPartPur > highestPurY ){
1218  highestPurY = iyPartPur;
1219  //highestPurIDY = iyPartID;
1220  highestPurPDGy = bt->TrackIDToParticle(iyPartID)->PdgCode();
1221  *pTypeY = GetTypeByPDG(highestPurPDGy);
1222  *purityY = highestPurY;
1223  }
1224 
1225  totalPurY+=iyPartPur;
1226  }
1227 
1228  }
1229 
1230  ProngType pType;
1231 
1232  pType = *pType3D;
1233 
1234  return pType;
1235  }// ProngClassify.
int PdgCode() const
Definition: MCParticle.h:211
enum cvn::PType ProngType
const art::PtrVector< rb::CellHit > & XCells() const
Get all cells from the x-view.
Definition: Cluster.h:124
const sim::ParticleNavigator & ParticleNavigator() const
Get a reference to the ParticleNavigator.
Definition: BackTracker.h:744
art::PtrVector< rb::CellHit > AllCells() const
Get all cells from both views.
Definition: Cluster.cxx:180
const art::PtrVector< rb::CellHit > & YCells() const
Get all cells from the x-view.
Definition: Cluster.h:126
double HitCollectionPurity(const std::set< int > &trackIDs, const std::vector< rb::WeightedHit > &whits, std::map< int, double > *purMap=0, std::map< int, int > *parents=0, bool energyPur=false) const
Returns the fraction of hits in a collection that come from the specified Geant4 track ids...
const sim::Particle * TrackIDToParticle(int const &id) const
Returns a pointer to the sim::Particle object corresponding to the given TrackID. ...
unsigned int NYCell() const
Number of cells in the y-view.
Definition: Cluster.h:108
std::vector< TrackIDE > HitsToTrackIDE(const std::vector< const rb::CellHit * > &hits, bool useBirksE=false) const
Returns vector of TrackIDE structs contributing to the given collection of hits.
bool IsPrimary(int trackID) const
unsigned int NXCell() const
Number of cells in the x-view.
Definition: Cluster.h:106
ProngType GetTypeByPDG(int pdg)
double TotalGeV(EEnergyCalcScheme escheme=kRecomputeEnergy) const
Simple sum of the estimated GeV of all the hits.
Definition: Cluster.cxx:378
InteractionType cvn::SliceClassify ( const art::Ptr< simb::MCTruth truth,
const rb::Cluster slice,
float &  nuEnergy,
float &  lepEnergy,
double &  vtxx,
double &  vtxy,
double &  vtxz 
)

Definition at line 275 of file AssignLabels.cxx.

References simb::MCNeutrino::CCNC(), simb::MCParticle::E(), GetInteractionTypeFromSlice(), simb::MCTruth::GetNeutrino(), simb::kCC, kOther, simb::MCNeutrino::Lepton(), simb::MCNeutrino::Mode(), simb::MCTruth::NeutrinoSet(), simb::MCNeutrino::Nu(), simb::MCParticle::PdgCode(), simb::MCParticle::Vx(), simb::MCParticle::Vy(), and simb::MCParticle::Vz().

Referenced by cvn::CVNEventDump::analyze(), cvn::CVNCosmicEventDump::analyze(), cvn::CVNEventProngDump::analyze(), and cvn::CVNAddTrainingData::produce().

278  {
279 
280  //std::cout << "Slice NCells = " << slice.NCell() << std::endl;
281 
282  if(!truth->NeutrinoSet()) return kOther;
283 
284  // get nu energy
285  const simb::MCNeutrino& nu = truth->GetNeutrino();
286  int nuPDG = nu.Nu().PdgCode();
287  bool nuIsCC = nu.CCNC() == simb::kCC;
288  int trueMode = nu.Mode();
289 
290  InteractionType sType = kOther;
291 
292  sType = GetInteractionTypeFromSlice(nuPDG, nuIsCC, trueMode);
293 
294  nuEnergy = nu.Nu().E();
295  lepEnergy = nu.Lepton().E();
296  vtxx = nu.Nu().Vx();
297  vtxy = nu.Nu().Vy();
298  vtxz = nu.Nu().Vz();
299