#include <NuePrint.h>
Inheritance diagram for NuePrint:

Public Member Functions | |
| NuePrint () | |
| ~NuePrint () | |
| JobCResult | Ana (const MomNavigator *mom) |
| void | BeginJob () |
| void | EndJob () |
| const Registry & | DefaultConfig () const |
| void | Config (const Registry &r) |
| TList * | GetVarList (NueRecord *nr) |
| void | PrintHeader (TList *vlist) |
| void | PrintValues (NueRecord *nr, std::string &sr, std::string &defval) |
| Bool_t | IsVarExcluded (std::string &sr) |
| Bool_t | IsVarIncluded (std::string &sr) |
| std::string | GetClassLabel (const char &str) |
| void | FillIncludeVec () |
Private Attributes | |
| ofstream * | fileOut |
| int | counter |
| int | passcounter |
| Int_t | nvar |
| std::string | outFilename |
| std::string | outFormat |
| std::string | excludeVars |
| Int_t | kHiPlaneTrackCut |
| Float_t | kPhProngCut |
| Float_t | kMeuEnergyCut |
| Int_t | kLoPlaneEventCut |
| Int_t | kHiTrackLikeCut |
| Int_t | kLoPhNStripCut |
| Int_t | kLoPhNPlaneCut |
| Float_t | kHiEnergyCut |
| Float_t | kLoEnergyCut |
| Float_t | kHiEnergyShowerCut |
| Float_t | kLoEnergyShowerCut |
| Int_t | kSigClass |
| Int_t | kBgNCClass |
| Int_t | kBgNumuClass |
| Int_t | kBgNutauClass |
| Int_t | kBgBnueClass |
| Int_t | kSigResCode |
| Float_t | kEmFrac |
| Int_t | outAll |
| Int_t | training |
| Int_t | recalc |
| Int_t | deftrk |
| Float_t | kDM2 |
| Float_t | kTheta23 |
| Float_t | kUE32 |
| std::string | incFile |
| std::vector< std::string > | excludeVec |
| std::vector< std::string > | includeVec |
Definition at line 33 of file NuePrint.h.
| NuePrint::NuePrint | ( | ) |
Definition at line 38 of file NuePrint.cxx.
00038 : 00039 counter(0), 00040 passcounter(0), 00041 outFilename(""), 00042 outFormat(""), 00043 excludeVars(""), 00044 kHiPlaneTrackCut(25), 00045 kPhProngCut(-1), 00046 kMeuEnergyCut(-1), 00047 kLoPlaneEventCut(-1), 00048 kHiTrackLikeCut(-1), 00049 kLoPhNStripCut(-1), 00050 kLoPhNPlaneCut(-1), 00051 kHiEnergyCut(-1), 00052 kLoEnergyCut(-1), 00053 kHiEnergyShowerCut(-1), 00054 kLoEnergyShowerCut(-1), 00055 kSigClass(2), 00056 kBgNCClass(0), 00057 kBgNumuClass(1), 00058 kBgNutauClass(3), 00059 kBgBnueClass(4), 00060 kSigResCode(1004), 00061 kEmFrac(-1), 00062 outAll(0), 00063 training(0), 00064 recalc(0), 00065 deftrk(0), 00066 kDM2(0.0025), 00067 kTheta23(TMath::Pi()/4.0), 00068 kUE32(0.01), 00069 incFile("") 00070 { 00071 00072 }
| NuePrint::~NuePrint | ( | ) |
| JobCResult NuePrint::Ana | ( | const MomNavigator * | mom | ) | [virtual] |
Implement this for read only access to the MomNavigator
Reimplemented from JobCModule.
Definition at line 78 of file NuePrint.cxx.
References NueRecord::anainfo, counter, ANtpTruthInfoBeam::emShowerFraction, ANtpTruthInfoBeamNue::fNueClass, MomNavigator::FragmentIter(), VldContext::GetDetector(), NueHeader::GetEventNo(), NueHeader::GetEvents(), RecRecordImp< T >::GetHeader(), NueHeader::GetRun(), NueHeader::GetSnarl(), GetVarList(), RecHeader::GetVldContext(), Shwfit::hiPhPlaneCount, Shwfit::hiPhStripCount, AnalysisInfoNue::inFiducialVolume, AnalysisInfoNue::isFullyContained, kBgBnueClass, kBgNCClass, kBgNumuClass, kBgNutauClass, Msg::kDebug, kEmFrac, Msg::kError, Detector::kFar, kHiEnergyCut, kHiEnergyShowerCut, kHiPlaneTrackCut, kHiTrackLikeCut, kLoEnergyCut, kLoEnergyShowerCut, kLoPhNPlaneCut, kLoPhNStripCut, kLoPlaneEventCut, kMeuEnergyCut, Detector::kNear, JobCResult::kPassed, kPhProngCut, kSigClass, kSigResCode, NueRecord::mctrue, MSG, outAll, outFormat, passcounter, ANtpEventInfoNue::phMeu, ANtpEventInfoNue::phNueGeV, ANtpEventInfo::planes, ANtpTrackInfo::planes, PrintHeader(), PrintValues(), ANtpShowerInfo::pulseHeight, ANtpTrackInfo::pulseHeight, ANtpTruthInfoBeam::resonanceCode, NueRecord::shwfit, NueRecord::srevent, NueRecord::srshower, NueRecord::srtrack, training, and ANtpTrackInfoNue::trklikePlanes.
00079 { 00080 00081 00082 TObject *obj=0; 00083 TIter objiter = mom->FragmentIter(); 00084 00085 TList *varList; 00086 string sepVal, defVal=""; 00087 if(outFormat=="WEKA"){ sepVal=","; defVal="?";} 00088 else if(outFormat=="SAS"){ sepVal=" "; defVal="-9999.99";} 00089 else if(outFormat=="SPR"){ sepVal=" "; defVal="-9999.99";} 00090 00091 while((obj=objiter.Next())){ 00092 00093 00094 NueRecord *nr = static_cast<NueRecord *>(obj); 00095 00096 00097 if(nr){ 00098 MSG("NuePrint",Msg::kDebug)<<"Found a NueRecord in MOM"<<endl; 00099 } 00100 else{ 00101 MSG("NuePrint",Msg::kError)<<"Didn't find a NueRecord in MOM"<<endl; 00102 counter++; 00103 continue; 00104 } 00105 MSG("NuePrint",Msg::kDebug)<<"Found a NueRecord "<<nr<<endl; 00106 00107 if(!counter){ 00108 varList=GetVarList(nr); 00109 PrintHeader(varList); 00110 00111 } 00112 counter++; 00113 00114 MSG("NuePrint",Msg::kDebug) << nr->GetHeader().GetRun() << " " 00115 << nr->GetHeader().GetSnarl() << " " 00116 << nr->GetHeader().GetEventNo() << " " 00117 << nr->GetHeader().GetEvents() 00118 << " " << outAll << endl; 00119 00120 00121 // Add any desired cuts here 00122 // Cut for no reco event 00123 if (nr->GetHeader().GetEventNo()<0&&!outAll) continue; 00124 // Cut for Fiducial volume 00125 if (nr->anainfo.inFiducialVolume != 1&&!outAll) continue; 00126 // Cut for Full Containment, note difference in Near/Far 00127 if (nr->GetHeader().GetVldContext().GetDetector()== Detector::kFar 00128 && nr->anainfo.isFullyContained != 1&&!outAll) continue; 00129 if (nr->GetHeader().GetVldContext().GetDetector()== Detector::kNear 00130 && nr->anainfo.isFullyContained != 1 00131 && nr->anainfo.isFullyContained != -2&&!outAll) continue; 00132 // Cut for max number of planes in Track 00133 if (nr->srtrack.planes>=kHiPlaneTrackCut&&kHiPlaneTrackCut>=0 00134 &&!outAll) continue; 00135 // Cut on max total event energy in Meu 00136 if(nr->srevent.phMeu>kMeuEnergyCut&&kMeuEnergyCut>=0&&!outAll) continue; 00137 // Cut on min Total pulse height per prong (sigcor) 00138 if(TMath::Max(nr->srtrack.pulseHeight,nr->srshower.pulseHeight) 00139 <kPhProngCut&&kPhProngCut>=0&&!outAll) continue; 00140 // Cut on max number of trklike planes in Track 00141 if (nr->srtrack.trklikePlanes>=kHiTrackLikeCut&&kHiTrackLikeCut>=0 00142 &&!outAll) continue; 00143 // Cut on min number of planes in Event 00144 if (nr->srevent.planes<kLoPlaneEventCut&&kLoPlaneEventCut>=0 00145 &&!outAll) continue; 00146 // Cut on max total event energy in Meu 00147 if (nr->srevent.phMeu>=kHiEnergyCut 00148 &&kHiEnergyCut>=0&&!outAll) continue; 00149 // Cut on min total event energy in Meu 00150 if (nr->srevent.phMeu<kLoEnergyCut 00151 &&kLoEnergyCut>=0&&!outAll) continue; 00152 // Cut on max shower energy (in gev) 00153 if (nr->srevent.phNueGeV>=kHiEnergyShowerCut 00154 &&kHiEnergyShowerCut>=0&&!outAll) continue; 00155 // Cut on min shower energy (in gev) 00156 if (nr->srevent.phNueGeV<kLoEnergyShowerCut 00157 &&kLoEnergyShowerCut>=0&&!outAll) continue; 00158 // Cut on min number of strips with above a threshold ph 00159 if (nr->shwfit.hiPhStripCount<kLoPhNStripCut 00160 &&kLoPhNStripCut>=0&&!outAll) continue; 00161 // Cut on min number of planes with above a threshold ph 00162 if (nr->shwfit.hiPhPlaneCount<kLoPhNPlaneCut 00163 &&kLoPhNPlaneCut>=0&&!outAll) continue; 00164 // Cuts for signal/background selection 00165 if(training==1&&(nr->mctrue.fNueClass==kSigClass 00166 ||nr->mctrue.fNueClass==kBgNCClass 00167 ||nr->mctrue.fNueClass==kBgNumuClass 00168 ||nr->mctrue.fNueClass==kBgNutauClass 00169 ||nr->mctrue.fNueClass==kBgBnueClass)) { 00170 MSG("NuePrint",Msg::kDebug) << "matched class" <<endl;} 00171 else if (training==0) { 00172 MSG("NuePrint",Msg::kDebug) << "training = 0, nothing to do " <<endl;} 00173 else{ continue;} 00174 if(nr->mctrue.fNueClass==kSigClass 00175 &&nr->mctrue.resonanceCode>kSigResCode) continue; 00176 if(nr->mctrue.fNueClass==kSigClass 00177 &&nr->mctrue.emShowerFraction<=kEmFrac) continue; 00178 // End of cuts section 00179 00180 PrintValues(nr,sepVal,defVal); 00181 00182 // here is where we are going to print 00183 //hpar0->Fill(nr->shwfit.par_a); 00184 //*fileOut << nr->shwfit.par_a << endl; 00185 00186 passcounter++; 00187 00188 } 00189 return JobCResult::kPassed; // kNoDecision, kFailed, etc. 00190 00191 00192 }
| void NuePrint::BeginJob | ( | ) | [virtual] |
Implement for notification of begin of job
Reimplemented from JobCModule.
Definition at line 193 of file NuePrint.cxx.
References excludeVars, excludeVec, fileOut, FillIncludeVec(), incFile, Msg::kDebug, kHiEnergyCut, kHiEnergyShowerCut, kHiPlaneTrackCut, kHiTrackLikeCut, Msg::kInfo, kLoEnergyCut, kLoEnergyShowerCut, kLoPhNPlaneCut, kLoPhNStripCut, kLoPlaneEventCut, kMeuEnergyCut, kPhProngCut, MSG, outAll, outFilename, UtilString::StringTok(), and training.
00194 { 00195 MSG("NuePrint",Msg::kDebug)<<"In NuePrint::BeginJob"<<endl; 00196 MSG("NuePrint",Msg::kInfo)<<"Writing out to file: " 00197 << outFilename << endl; 00198 00199 fileOut = new ofstream (outFilename.c_str()); 00200 00201 string str=","; 00202 00203 MSG("NuePrint",Msg::kInfo) << "Excluding Vars: " << excludeVars <<endl; 00204 if(excludeVars.find(",")==string::npos) { 00205 excludeVec.push_back(excludeVars); 00206 } else { UtilString::StringTok(excludeVec,excludeVars,str);} 00207 00208 MSG("NuePrint",Msg::kInfo) << excludeVec.size() 00209 << " var: " ; 00210 for(int ivar=0; ivar < (int) excludeVec.size(); ivar++){ 00211 MSG("NuePrint",Msg::kInfo) << excludeVec[ivar] << " " ; 00212 } 00213 MSG("NuePrint",Msg::kInfo) << endl; 00214 00215 if(incFile.size()) FillIncludeVec(); 00216 00217 MSG("NuePrint",Msg::kInfo) << "Printing all events: " << outAll << endl; 00218 MSG("NuePrint",Msg::kInfo) << "Hiding dummy vars: " << training << endl; 00219 MSG("NuePrint",Msg::kInfo) << "Using Cuts " << endl; 00220 if(kHiPlaneTrackCut>=0) 00221 MSG("NuePrint",Msg::kInfo) << "HiPlaneTrackCut: " << kHiPlaneTrackCut << endl; 00222 if(kPhProngCut>=0) 00223 MSG("NuePrint",Msg::kInfo) << "PhProngCut: " << kPhProngCut << endl; 00224 if(kMeuEnergyCut>=0) 00225 MSG("NuePrint",Msg::kInfo) << "MeuEnergyCut: " << kMeuEnergyCut << endl; 00226 if(kHiTrackLikeCut>=0) 00227 MSG("NuePrint",Msg::kInfo) << "HiTrackLikeCut: " << kHiTrackLikeCut << endl; 00228 if(kLoPlaneEventCut>=0) 00229 MSG("NuePrint",Msg::kInfo) << "LoPlaneEventCut: " << kLoPlaneEventCut << endl; 00230 if(kHiEnergyCut>=0) 00231 MSG("NuePrint",Msg::kInfo) << "HiEnergyCut: " << kHiEnergyCut << endl; 00232 if(kLoEnergyCut>=0) 00233 MSG("NuePrint",Msg::kInfo) << "LoEnergyCut: " << kLoEnergyCut << endl; 00234 if(kHiEnergyShowerCut>=0) 00235 MSG("NuePrint",Msg::kInfo) << "HiEnergyShowerCut: " << kHiEnergyShowerCut << endl; 00236 if(kLoEnergyShowerCut>=0) 00237 MSG("NuePrint",Msg::kInfo) << "LoEnergyShowerCut: " << kLoEnergyShowerCut << endl; 00238 if(kLoPhNStripCut>=0) 00239 MSG("NuePrint",Msg::kInfo) << "LoPhNStripCut: " << kLoPhNStripCut << endl; 00240 if(kLoPhNPlaneCut>=0) 00241 MSG("NuePrint",Msg::kInfo) << "LoPhNPlaneCut: " << kLoPhNPlaneCut << endl; 00242 00243 00244 00245 00246 }
| void NuePrint::Config | ( | const Registry & | r | ) | [virtual] |
Return the actual configuration. If your module directly pulls its configuration from the fConfig Registry, you don't need to override this. Override if you have local config variables.
Reimplemented from JobCModule.
Definition at line 667 of file NuePrint.cxx.
References deftrk, excludeVars, Registry::Get(), incFile, kBgBnueClass, kBgNCClass, kBgNumuClass, kBgNutauClass, Msg::kDebug, kDM2, kEmFrac, kHiEnergyCut, kHiEnergyShowerCut, kHiPlaneTrackCut, kHiTrackLikeCut, kLoEnergyCut, kLoEnergyShowerCut, kLoPhNPlaneCut, kLoPhNStripCut, kLoPlaneEventCut, kMeuEnergyCut, kPhProngCut, kSigClass, kSigResCode, kTheta23, kUE32, MSG, outAll, outFilename, outFormat, recalc, and training.
00668 { 00669 //====================================================================== 00670 // Configure the module given the Registry r 00671 //====================================================================== 00672 MSG("NuePrint",Msg::kDebug)<<"In NuePrint::Config"<<endl; 00673 00674 const char* tmps; 00675 00676 00677 if(r.Get("excludeVars",tmps)) { excludeVars = tmps;} 00678 if(r.Get("outFilename",tmps)) { outFilename = tmps;} 00679 if(r.Get("outFormat",tmps)) { outFormat = tmps;} 00680 if(r.Get("includeFile",tmps)) {incFile = tmps;} 00681 00682 00683 00684 int imps; 00685 if(r.Get("HiPlaneTrackCut",imps)) { kHiPlaneTrackCut=imps;} 00686 if(r.Get("printAll",imps)) { outAll = imps;} 00687 if(r.Get("training",imps)) { training = imps;} 00688 if(r.Get("recalcOsc",imps)) { recalc = imps;} 00689 if(r.Get("defaultTrkVal",imps)) {deftrk = imps;} 00690 00691 if(r.Get("LoPlaneEventCut",imps)) { kLoPlaneEventCut=imps;} 00692 if(r.Get("HiTrackLikeCut",imps)) { kHiTrackLikeCut=imps;} 00693 if(r.Get("LoPhNStripCut",imps)) { kLoPhNStripCut=imps;} 00694 if(r.Get("LoPhNPlaneCut",imps)) { kLoPhNPlaneCut=imps;} 00695 00696 if(r.Get("SigClass",imps)){kSigClass=imps;} 00697 if(r.Get("BgNCClass",imps)){kBgNCClass=imps;} 00698 if(r.Get("BgNumuClass",imps)){kBgNumuClass=imps;} 00699 if(r.Get("BgNutauClass",imps)){kBgNutauClass=imps;} 00700 if(r.Get("BgBnueClass",imps)){kBgBnueClass=imps;} 00701 if(r.Get("SigResCode",imps)){kSigResCode=imps;} 00702 00703 double fmps; 00704 if(r.Get("MeuEnergyCut",fmps)){ kMeuEnergyCut=fmps; } 00705 if(r.Get("PhProngCut",fmps)){ kPhProngCut=fmps; } 00706 00707 if(r.Get("HiEnergyCut",fmps)) { kHiEnergyCut=fmps;} 00708 if(r.Get("LoEnergyCut",fmps)) { kLoEnergyCut=fmps;} 00709 if(r.Get("HiEnergyShowerCut",fmps)) { kHiEnergyShowerCut=fmps;} 00710 if(r.Get("LoEnergyShowerCut",fmps)) { kLoEnergyShowerCut=fmps;} 00711 00712 if(r.Get("EmFrac",fmps)){kEmFrac=fmps;} 00713 00714 if(r.Get("DM2",fmps)) { kDM2 = fmps;} 00715 if(r.Get("Theta23",fmps)) { kTheta23 = fmps;} 00716 if(r.Get("UE32",fmps)) { kUE32 = fmps;} 00717 00718 }
| const Registry & NuePrint::DefaultConfig | ( | ) | const [virtual] |
Get the default configuration registry. This should normally be overridden. One useful idiom is to implement it like:
const Registry& MyModule::DefaultConfig() const { static Registry cfg; // never is destroyed if (cfg.Size()) return cfg; // already filled it // set defaults: cfg.Set("TheAnswer",42); cfg.Set("Units","unknown"); return cfg; }
Reimplemented from JobCModule.
Definition at line 608 of file NuePrint.cxx.
References JobCModule::GetName(), Msg::kDebug, Registry::LockValues(), MSG, Registry::Set(), and Registry::UnLockValues().
00609 { 00610 //====================================================================== 00611 // Supply the default configuration for the module 00612 //====================================================================== 00613 MSG("NuePrint",Msg::kDebug)<<"In NuePrint::DefaultConfig"<<endl; 00614 00615 static Registry r; // Default configuration for module 00616 00617 // Set name of config 00618 std::string name = this->GetName(); 00619 name += ".config.default"; 00620 r.SetName(name.c_str()); 00621 00622 // Set values in configuration 00623 r.UnLockValues(); 00624 r.Set("excludeVars","templates.root"); 00625 r.Set("outFilename","training.arff"); 00626 r.Set("outFormat","WEKA"); 00627 r.Set("includeFile",""); 00628 00629 00630 r.Set("HiPlaneTrackCut",25); 00631 r.Set("printAll","0"); 00632 r.Set("training","0"); 00633 r.Set("recalcOsc",0); 00634 r.Set("defaultTrkVal",0); 00635 00636 r.Set("LoPlaneEventCut",-1); 00637 r.Set("HiTrackLikeCut",-1); 00638 r.Set("LoPhNStripCut",-1); 00639 r.Set("LoPhNPlaneCut",-1); 00640 00641 r.Set("MeuEnergyCut",0.); 00642 r.Set("PhProngCut",0.); 00643 00644 r.Set("HiEnergyCut",-1); 00645 r.Set("LoEnergyCut",-1); 00646 r.Set("HiEnergyShowerCut",-1); 00647 r.Set("LoEnergyShowerCut",-1); 00648 00649 r.Set("SigClass",2); 00650 r.Set("BgNCClass",0); 00651 r.Set("BgNumuClass",1); 00652 r.Set("BgNutauClass",3); 00653 r.Set("BgBnueClass",4); 00654 r.Set("SigResCode",1004); 00655 r.Set("EmFrac",-1); 00656 00657 00658 r.Set("DM2", 0.0025); 00659 r.Set("Theta23", TMath::Pi()/4.0); 00660 r.Set("UE32", 0.01); 00661 00662 r.LockValues(); 00663 00664 return r; 00665 00666 }
| void NuePrint::EndJob | ( | ) | [virtual] |
Implement for notification of end of job
Reimplemented from JobCModule.
Definition at line 272 of file NuePrint.cxx.
References counter, Msg::kInfo, MSG, and passcounter.
00273 { 00274 MSG("NuePrint",Msg::kInfo)<<"Counter "<<counter<<" passcounter "<<passcounter<<endl; 00275 00276 }
| void NuePrint::FillIncludeVec | ( | ) |
Definition at line 247 of file NuePrint.cxx.
References incFile, includeVec, Msg::kInfo, and MSG.
Referenced by BeginJob().
00248 { 00249 std::string dumName, dumtype; 00250 Float_t dumstart, dumend; 00251 Int_t dumbins, ivar; 00252 ifstream ins; 00253 ins.open(incFile.c_str()); 00254 00255 ivar = 0; 00256 00257 //read in the file 00258 while(!ins.eof()) { 00259 ins>>dumName>>dumstart>>dumend>>dumbins>>dumtype; 00260 if(!ins.eof()){ 00261 includeVec.push_back(dumName); 00262 // beg.push_back(dumstart); end.push_back(dumend); 00263 // nbins.push_back(dumbins); gtype.push_back(dumtype); 00264 ivar++; 00265 } 00266 } 00267 00268 MSG("NuePrint",Msg::kInfo) << "Using include file: "<< incFile << endl; 00269 MSG("NuePrint",Msg::kInfo) << ivar<<" variables read in"<<endl; 00270 00271 }
| std::string NuePrint::GetClassLabel | ( | const char & | str | ) |
Definition at line 561 of file NuePrint.cxx.
References NueConvention::bnue, Msg::kWarning, MSG, NueConvention::NC, NueConvention::nue, NueConvention::numu, NueConvention::nutau, outFormat, and training.
Referenced by PrintValues().
00561 { 00562 string cl; 00563 if(outFormat=="WEKA"){ 00564 if(atoi(&str)==ClassType::NC) cl="nc"; 00565 else if(atoi(&str)==ClassType::numu) cl="numu"; 00566 else if(atoi(&str)==ClassType::nue) cl="nue"; 00567 else if(atoi(&str)==ClassType::nutau) cl="nutau"; 00568 else if(atoi(&str)==ClassType::bnue) cl="bnue"; 00569 else { 00570 MSG("NuePrint",Msg::kWarning) << "Event with no class" << endl; 00571 cl="empty"; 00572 } 00573 }else if(outFormat=="SAS"){ 00574 if(atoi(&str)==ClassType::NC) cl="ncu"; 00575 else if(atoi(&str)==ClassType::numu) cl="num"; 00576 else if(atoi(&str)==ClassType::nue) cl="nue"; 00577 else if(atoi(&str)==ClassType::nutau) cl="nut"; 00578 else if(atoi(&str)==ClassType::bnue) cl="bnu"; 00579 else { 00580 MSG("NuePrint",Msg::kWarning) << "Event with no class" << endl; 00581 cl="non"; 00582 } 00583 }else if(outFormat=="SPR"&&training){ 00584 if(atoi(&str)==ClassType::NC) cl="0"; 00585 else if(atoi(&str)==ClassType::numu) cl="0"; 00586 else if(atoi(&str)==ClassType::nue) cl="1"; 00587 else if(atoi(&str)==ClassType::nutau) cl="0"; 00588 else if(atoi(&str)==ClassType::bnue) cl="0"; 00589 else { 00590 MSG("NuePrint",Msg::kWarning) << "Event with no class" << endl; 00591 cl="0"; 00592 } 00593 }else if(outFormat=="SPR"&&!training){ 00594 if(atoi(&str)==ClassType::NC) cl="0"; 00595 else if(atoi(&str)==ClassType::numu) cl="1"; 00596 else if(atoi(&str)==ClassType::nue) cl="2"; 00597 else if(atoi(&str)==ClassType::nutau) cl="3"; 00598 else if(atoi(&str)==ClassType::bnue) cl="4"; 00599 else { 00600 MSG("NuePrint",Msg::kWarning) << "Event with no class" << endl; 00601 cl="5"; 00602 } 00603 } 00604 00605 return cl; 00606 00607 }
| TList * NuePrint::GetVarList | ( | NueRecord * | nr | ) |
Definition at line 277 of file NuePrint.cxx.
References Msg::kInfo, and MSG.
Referenced by Ana().
00277 { 00278 TClass *cl; 00279 TList *vlist; 00280 00281 cl=nr->IsA(); 00282 if (!cl->GetListOfRealData()) cl->BuildRealData(nr); 00283 00284 vlist=cl->GetListOfRealData(); 00285 MSG("NuePrint",Msg::kInfo)<<"Total Variables being in NueRecord " 00286 << vlist->GetSize() << endl; 00287 00288 return vlist; 00289 }
| Bool_t NuePrint::IsVarExcluded | ( | std::string & | sr | ) |
Definition at line 353 of file NuePrint.cxx.
References excludeVec, includeVec, and IsVarIncluded().
Referenced by PrintHeader(), and PrintValues().
00353 { 00354 00355 if(sr=="mctrue.fNueClass") return true; 00356 if(sr=="fHeader.fRun") return true; 00357 if(sr=="fHeader.fSubRun") return true; 00358 if(sr=="fHeader.fSnarl") return true; 00359 if(sr=="fHeader.fEvtNo") return true; 00360 00361 if(sr.find(".")==string::npos) return true; 00362 00363 for(int ivar=0; ivar < (int) excludeVec.size(); ivar++){ 00364 // cout << ivar << " " << excludeVec[ivar]<< endl; 00365 if(sr.find(excludeVec[ivar])!=string::npos) return true; 00366 } 00367 00368 if(sr.find("*")!=string::npos) return true; 00369 if(sr.find("fUniqueID")!=string::npos) return true; 00370 if(sr.find("fBits")!=string::npos) return true; 00371 if(sr.find("fTempTags")!=string::npos) return true; 00372 if(sr.find("fData")!=string::npos) return true; 00373 if(sr.find("fVldContext")!=string::npos) return true; 00374 if(sr.find("found")!=string::npos) return true; 00375 00376 if(includeVec.size()>0){ 00377 if(IsVarIncluded(sr)) return false; 00378 else return true; 00379 } 00380 00381 return false; 00382 }
| Bool_t NuePrint::IsVarIncluded | ( | std::string & | sr | ) |
Definition at line 383 of file NuePrint.cxx.
References includeVec.
Referenced by IsVarExcluded().
00383 { 00384 00385 // Note exclusion precedes inclusion, so if you exclude a branch 00386 // and then include a var in your file is not going to get printed 00387 00388 for(int ivar=0; ivar < (int) includeVec.size(); ivar++){ 00389 // cout << ivar << " " << includeVec[ivar]<< endl; 00390 if(sr == includeVec[ivar]) return true; 00391 } 00392 return false; 00393 }
| void NuePrint::PrintHeader | ( | TList * | vlist | ) |
Definition at line 291 of file NuePrint.cxx.
References counter, fileOut, IsVarExcluded(), Msg::kDebug, Msg::kInfo, MSG, nvar, and outFormat.
Referenced by Ana().
00291 { 00292 string varName; 00293 TRealData *rd; 00294 00295 TIter next(vlist); 00296 Int_t counter=0; 00297 MSG("NuePrint",Msg::kDebug)<< "Attributes list: "; 00298 00299 if(outFormat=="WEKA") 00300 *fileOut << "@relation nue_output" << endl << endl; 00301 00302 if(outFormat=="SPR"){ 00303 *fileOut << "# SPR file definition" << endl; 00304 *fileOut << "nvar"<< endl; 00305 } 00306 while((rd =dynamic_cast<TRealData*>(next()))){ 00307 varName=rd->GetName(); 00308 if(!IsVarExcluded(varName)){ 00309 MSG("NuePrint",Msg::kDebug)<< varName << ","; 00310 if(outFormat=="WEKA"){ 00311 *fileOut << "@attribute " << varName << " real" << endl; 00312 }else if(outFormat=="SAS"){ 00313 *fileOut << varName << ","; 00314 }else if(outFormat=="SPR"){ 00315 *fileOut << varName << " "; 00316 } 00317 counter++; 00318 } 00319 } 00320 00321 00322 if(outFormat=="WEKA"){ 00323 *fileOut << "@attribute fHeader.fRun real" <<endl; 00324 *fileOut << "@attribute fHeader.fSubRun real" <<endl; 00325 *fileOut << "@attribute fHeader.fSnarl real" <<endl; 00326 *fileOut << "@attribute fHeader.fEvtNo real" <<endl; 00327 } 00328 else if(outFormat=="SAS"){ 00329 *fileOut << "fHeader.fRun,fHeader.fSubRun,fHeader.fSnarl,fHeader.fEvtNo,"; 00330 } 00331 else if(outFormat=="SPR"){ 00332 *fileOut << "fHeader.fRun fHeader.fSubRun fHeader.fSnarl fHeader.fEvtNo "; 00333 } 00334 00335 if(outFormat=="WEKA"){ 00336 *fileOut << "@attribute class {nc,numu,nue,nutau,bnue,empty}" << endl; 00337 }else if(outFormat=="SAS"){ 00338 *fileOut << "fHeader.fFileNo" << "," << "weight" << ","<< "class" << endl; 00339 }else if(outFormat=="SPR"){ 00340 *fileOut << "fHeader.fFileNo" << endl; 00341 } 00342 MSG("NuePrint",Msg::kDebug)<< "class" << endl; 00343 00344 if(outFormat=="WEKA"){ counter=counter+5; nvar=counter;} 00345 if(outFormat=="SAS"){ counter=counter+7; nvar=counter;} 00346 if(outFormat=="SPR"){ counter=counter+7; nvar=counter;} 00347 00348 MSG("NuePrint",Msg::kInfo)<< "Total vars being used: " << nvar << endl; 00349 if(outFormat=="WEKA") 00350 *fileOut << endl << "@data" << endl; 00351 }
| void NuePrint::PrintValues | ( | NueRecord * | nr, | |
| std::string & | sr, | |||
| std::string & | defval | |||
| ) |
Definition at line 394 of file NuePrint.cxx.
References deftrk, MuELoss::e, fileOut, GetClassLabel(), ANtpDefaultValue::IsDefault(), IsVarExcluded(), Msg::kDebug, kDM2, Msg::kError, kTheta23, kUE32, NueRecord::mctrue, MSG, ANtpTruthInfoBeam::nonOscNuEnergy, ANtpTruthInfoBeam::nonOscNuFlavor, ANtpTruthInfo::nuFlavor, nvar, NueRWHelpers::Oscillate(), outFormat, recalc, and training.
Referenced by Ana().
00394 { 00395 TClass *cl; 00396 TRealData *rd; 00397 string varName; 00398 TDataMember *member; 00399 TDataType *membertype; 00400 Float_t value; 00401 Int_t fileNo=0; 00402 string classStr; 00403 const char *buffer; 00404 Int_t valrun=0,valsub=0,valsnr=0,valevt=0; 00405 Float_t valweight = 0.; 00406 Int_t ivar=0; 00407 Int_t pvar=0; 00408 00409 cl=nr->IsA(); 00410 TIter next(cl->GetListOfRealData()); 00411 00412 while ((rd =dynamic_cast<TRealData*>(next()))) { 00413 member = rd->GetDataMember(); 00414 membertype = member->GetDataType(); 00415 varName=rd->GetName(); 00416 00417 Int_t offset = rd->GetThisOffset(); 00418 char *pointer = (char*)nr + offset; 00419 00420 if (!IsVarExcluded(varName)) { 00421 // if (varName.find("fHeader.fRun")!=string::npos){ 00422 00423 // } 00424 value=atof(membertype->AsString(pointer)); 00425 ivar++; 00426 MSG("NuePrint",Msg::kDebug)<<member->GetFullTypeName() << " " << varName << " " << value << endl; 00427 00428 if(strcmp(member->GetTypeName(),"Float_t")==0 00429 || strcmp(member->GetTypeName(),"float")==0 00430 || strcmp(member->GetTypeName(),"Double_t")==0 00431 || strcmp(member->GetTypeName(),"double")==0){ 00432 if ((ANtpDefVal::IsDefault(value) 00433 || ANtpDefVal::IsDefault(static_cast<Double_t> (value)) 00434 || !TMath::Finite(value) || TMath::IsNaN(value) || value>1e+8 ) 00435 &&!defval.empty()){ 00436 MSG("NuePrint",Msg::kDebug) << "Found default value" << endl; 00437 if(deftrk&&varName.find("srtrack")!=string::npos 00438 &&varName!="srtrack.rangeMomentum" 00439 &&varName!="srtrack.sigmaQoverP"){ 00440 *fileOut << deftrk << sr ; pvar++; 00441 } 00442 else{*fileOut << defval << sr ; pvar++;} 00443 } 00444 else if((value>-1e-8&&value<1e-8)&&!varName.find("timeLength")){ 00445 value=0.0; 00446 *fileOut << value << sr ; pvar++; 00447 } else { 00448 valweight=1; 00449 if(recalc==1 00450 && varName.find("mctrue.fOscProb")!=string::npos){ 00451 MSG("NuePrint",Msg::kDebug)<<" Value in ntuple " 00452 << value << endl; 00453 value=NueRWHelpers::Oscillate(nr->mctrue.nuFlavor 00454 ,nr->mctrue.nonOscNuFlavor 00455 ,nr->mctrue.nonOscNuEnergy 00456 ,735, kDM2, kTheta23 00457 , kUE32); 00458 valweight=value; 00459 MSG("NuePrint",Msg::kDebug)<<" Value of " << varName 00460 <<" after recalc " << value 00461 <<" from " 00462 << nr->mctrue.nuFlavor 00463 << " " 00464 << nr->mctrue.nonOscNuFlavor 00465 << " " 00466 << nr->mctrue.nonOscNuEnergy 00467 << " " 00468 << endl; 00469 00470 } 00471 if(deftrk&&varName.find("srtrack")!=string::npos 00472 &&varName!="srtrack.rangeMomentum" 00473 &&varName!="srtrack.sigmaQoverP"){ 00474 *fileOut << deftrk << sr ; pvar++; 00475 } 00476 else{*fileOut << value << sr ; pvar++;} 00477 } 00478 } else if(strcmp(member->GetTypeName(),"Int_t")==0 00479 || strcmp(member->GetTypeName(),"int")==0){ 00480 if ((ANtpDefVal::IsDefault(static_cast<Int_t> (value)) 00481 || ANtpDefVal::IsDefault(static_cast<Int_t> (value)) 00482 || !TMath::Finite(value) || TMath::IsNaN(value)) 00483 &&!defval.empty()){ 00484 MSG("NuePrint",Msg::kDebug) << "Found default value" << endl; 00485 *fileOut << defval << sr ; pvar++; 00486 } 00487 else { 00488 *fileOut << value << sr ; pvar++; 00489 } 00490 } 00491 else{ 00492 MSG("NuePrint",Msg::kError) 00493 << "Problem: you are not taking into account this type: " 00494 <<"Membertype "<< member->GetFullTypeName() 00495 << " VarName " << varName 00496 << " Value " << membertype->AsString(pointer) << endl; 00497 00498 } 00499 MSG("NuePrint",Msg::kDebug) 00500 <<"Membertype "<< member->GetFullTypeName() 00501 << " VarName " << varName 00502 << " Value " << membertype->AsString(pointer) << endl; 00503 } 00504 else if(varName.find("NueClass")!=string::npos){ 00505 ivar++; 00506 buffer=membertype->AsString(pointer); 00507 classStr=GetClassLabel(*buffer); 00508 } 00509 else if(varName.find("fHeader.fRun")!=string::npos){ 00510 ivar++; 00511 valrun=atoi(membertype->AsString(pointer)); 00512 if (outFormat=="SAS" || outFormat=="SPR"){ 00513 fileNo=valrun%1000; 00514 ivar++; 00515 } 00516 } 00517 else if(varName.find("fHeader.fSubRun")!=string::npos){ 00518 ivar++; 00519 valsub=atoi(membertype->AsString(pointer)); 00520 } 00521 else if(varName.find("fHeader.fSnarl")!=string::npos){ 00522 ivar++; 00523 valsnr=atoi(membertype->AsString(pointer)); 00524 } 00525 else if(varName.find("fHeader.fEvtNo")!=string::npos){ 00526 ivar++; 00527 valevt=atoi(membertype->AsString(pointer)); 00528 } 00529 } 00530 00531 if(training){ 00532 *fileOut << "99999999" << sr << "9" << sr << "9999" << sr << "9" << sr; 00533 pvar=pvar+4; 00534 } 00535 else{ 00536 *fileOut << valrun << sr << valsub << sr << valsnr << sr << valevt << sr; 00537 pvar=pvar+4; 00538 } 00539 if (outFormat=="SAS" || outFormat=="SPR"){ 00540 if(!training) {*fileOut << fileNo << sr; pvar++;} 00541 else {*fileOut << 9 << sr; pvar++;} 00542 if(recalc==1){*fileOut << valweight << sr; pvar++; ivar++;} 00543 else{*fileOut << 1 << sr; pvar++; ivar++;} 00544 } 00545 00546 *fileOut << classStr; pvar++; 00547 *fileOut << endl; 00548 00549 if(ivar!=nvar||pvar!=nvar) { 00550 00551 MSG("NuePrint",Msg::kError) << " printing less vars than in header" 00552 <<endl; 00553 00554 MSG("NuePrint",Msg::kError) << "Header: " << nvar 00555 << " Not excluded: " << ivar 00556 << " Printed: " << pvar << endl; 00557 00558 } 00559 00560 }
int NuePrint::counter [private] |
Int_t NuePrint::deftrk [private] |
std::string NuePrint::excludeVars [private] |
std::vector<std::string> NuePrint::excludeVec [private] |
ofstream* NuePrint::fileOut [private] |
Definition at line 60 of file NuePrint.h.
Referenced by BeginJob(), PrintHeader(), and PrintValues().
std::string NuePrint::incFile [private] |
std::vector<std::string> NuePrint::includeVec [private] |
Definition at line 97 of file NuePrint.h.
Referenced by FillIncludeVec(), IsVarExcluded(), and IsVarIncluded().
Int_t NuePrint::kBgBnueClass [private] |
Int_t NuePrint::kBgNCClass [private] |
Int_t NuePrint::kBgNumuClass [private] |
Int_t NuePrint::kBgNutauClass [private] |
Float_t NuePrint::kDM2 [private] |
Float_t NuePrint::kEmFrac [private] |
Float_t NuePrint::kHiEnergyCut [private] |
Float_t NuePrint::kHiEnergyShowerCut [private] |
Int_t NuePrint::kHiPlaneTrackCut [private] |
Int_t NuePrint::kHiTrackLikeCut [private] |
Float_t NuePrint::kLoEnergyCut [private] |
Float_t NuePrint::kLoEnergyShowerCut [private] |
Int_t NuePrint::kLoPhNPlaneCut [private] |
Int_t NuePrint::kLoPhNStripCut [private] |
Int_t NuePrint::kLoPlaneEventCut [private] |
Float_t NuePrint::kMeuEnergyCut [private] |
Float_t NuePrint::kPhProngCut [private] |
Int_t NuePrint::kSigClass [private] |
Int_t NuePrint::kSigResCode [private] |
Float_t NuePrint::kTheta23 [private] |
Float_t NuePrint::kUE32 [private] |
Int_t NuePrint::nvar [private] |
Int_t NuePrint::outAll [private] |
std::string NuePrint::outFilename [private] |
std::string NuePrint::outFormat [private] |
Definition at line 65 of file NuePrint.h.
Referenced by Ana(), Config(), GetClassLabel(), PrintHeader(), and PrintValues().
int NuePrint::passcounter [private] |
Int_t NuePrint::recalc [private] |
Int_t NuePrint::training [private] |
Definition at line 87 of file NuePrint.h.
Referenced by Ana(), BeginJob(), Config(), GetClassLabel(), and PrintValues().
1.4.7