00001 #ifndef CHOPEVALUATION_H 00002 #define CHOPEVALUATION_H 00003 00009 00010 #include "CandDigit/CandDigitHandle.h" 00011 #include "DataUtil/Truthifier.h" 00012 #include <TObject.h> 00013 #include <vector> 00014 00015 static const int kNProf = 15; 00016 00017 class profile_element{ 00018 public: 00019 int i; 00020 float p; 00021 }; 00022 00023 class ChopEvaluation //: public TObject 00024 { 00025 public: 00026 int fTdcBeg; // TDC time start 00027 int fTdcEnd; // TDC time stop 00028 int fPlaneBeg; // start plane 00029 int fPlaneEnd; // end plane 00030 00031 double fSigcor; 00032 double fSigcor_cal; // Calorimeter 00033 double fSigcor_calt; // Calorimeter 00034 double fSigcor_fid; // Calorimeter, "fiducial" volume only. 00035 double fMeanTime; // charge-weighted 00036 int fBigTdc; // Biggest bucket in t-bins 00037 double fBigTdcE; // Size of biggest bucket 00038 int fBigPlane; // Biggest bucket in t-bins 00039 double fBigPlaneE; // Size of biggest bucket 00040 int fPlanes; // Total planes hit 00041 int fStrips; // total strips hit 00042 int fCalStrips; // total strips hit 00043 int fDigits; // Total digits 00044 00045 int fBestNeutrino1; 00046 int fBestNeutrino2; 00047 00048 profile_element fProfile[kNProf]; 00049 00050 // work elements 00051 std::vector<double> fTdcProfile; 00052 std::vector<double> fPlaneProfile; 00053 std::vector<double> fNuMatch; 00054 std::vector<double> fNuMatch_cal; 00055 std::vector<double> fNuMatch_fid; 00056 std::vector<double> fNuMatch_calt; 00057 std::vector<double> fNuMatch_caltfid; 00058 std::vector<double> fNuMatch_strips; 00059 std::vector<double> fNuMatch_calstrips; 00060 00061 00062 ChopEvaluation(); 00063 void Reset(); 00064 00065 void Evaluate( 00066 const std::vector<CandDigitHandle>& inList, // digits to evaluate 00067 const Truthifier& truth, // truth. 00068 const std::vector<int>& inNeutrinos, // indecies of neutrinos in truth info 00069 const std::vector<double>& inNeutrinoTZero, // time of first interaction of each nu 00070 double inTCut 00071 ); 00072 00073 //ClassDef(ChopEvaluation,1); 00074 }; 00075 00077 00078 00079 class ChopNeutrinoInfo 00080 { 00081 public: 00082 int inu; 00083 float vtxt; 00084 float vtxtdc; 00085 float vtxx; 00086 float vtxy; 00087 float vtxz; 00088 00089 float enu; // neutrino energy 00090 float emu; // muon 00091 float eem; // em 00092 float eshw; // shower 00093 float evis; // shower+muon+em 00094 int iaction; 00095 float X; 00096 float Y; 00097 float tzero; // time of first hit 00098 00099 ChopNeutrinoInfo() { 00100 inu=iaction=-1; 00101 vtxt=vtxtdc=vtxx=vtxy=vtxz=999999; 00102 enu=emu=eem=eshw=evis=X=Y=tzero=0; 00103 } 00104 //ClassDef(ChopNeutrinoInfo,1); 00105 }; 00106 00107 class ChopNeutrinoLeaf : public ChopEvaluation, public ChopNeutrinoInfo 00108 { 00109 public: 00110 // Truth: 00111 int snarl; 00112 float viscal; // of neutrino 00113 float viscalt; 00114 float visfid; 00115 float visfidt; 00116 float sigcorr; 00117 float strips; 00118 float calstrips; 00119 00120 00121 int chop1; 00122 float completet1; 00123 float complete1; 00124 float complete_tot1; 00125 float strips1; 00126 float calstrips1; 00127 float stripsmatch1; 00128 float calstripsmatch1; 00129 float chop1_viscal; 00130 float chop1_viscalt; 00131 float chop1_visfid; 00132 float chop1_sigcorr; 00133 int chop1_nu; 00134 int chop1_tdc; 00135 int chop1_planebeg; 00136 int chop1_planeend; 00137 00138 00139 int chop2; 00140 float completet2; 00141 float complete2; 00142 float complete_tot2; 00143 float strips2; 00144 float calstrips2; 00145 float stripsmatch2; 00146 float calstripsmatch2; 00147 float chop2_viscal; 00148 float chop2_viscalt; 00149 float chop2_visfid; 00150 float chop2_sigcorr; 00151 int chop2_nu; 00152 int chop2_tdc; 00153 int chop2_planebeg; 00154 int chop2_planeend; 00155 00156 00157 00158 ChopNeutrinoLeaf() { Reset(); }; 00159 void Reset() { 00160 chop1=chop2=-1; 00161 complete1=complete2=0; 00162 completet1=completet2=0; 00163 strips1 = strips2 = 0; 00164 stripsmatch1 = stripsmatch2 = 0; 00165 chop1_viscal = chop2_viscal=0; 00166 chop1_visfid = chop2_visfid = 0; 00167 chop1_nu = chop2_nu = 0; 00168 chop1_tdc = chop2_tdc = 0; 00169 } 00170 00171 }; 00172 00173 00174 00175 00176 class ChopTreeLeaf : public ChopEvaluation, public ChopNeutrinoInfo 00177 { 00178 public: 00179 int snarl; 00180 int chop; 00181 00182 // Evalution: 00183 float complete1; // Completeness, fraction, of biggest nu event. 00184 float viscal1; // of neutrino 00185 float viscalt1; 00186 float visfidt1; 00187 float strips1; 00188 00189 float complete2; // Completeness, fraction, of biggest nu event. 00190 float viscal2; // of neutrino 00191 float viscalt2; 00192 float visfidt2; 00193 float strips2; 00194 00195 ChopTreeLeaf() { Reset(); }; 00196 void Reset() { 00197 snarl = 0; 00198 } 00199 }; 00200 00201 00202 #endif
1.3.9.1