A one line description of what your module does. More...
#include <PlotTAP_TDiff.h>
Public Member Functions | |
PlotTAP_TDiff (modules::options *opts) | |
Constructor description. If necessary, add a details tag like above. | |
~PlotTAP_TDiff () | |
Is anything done in the destructor? | |
int | ProcessGenericEntry (TGlobalData *gData, const TSetupData *gSetup) |
int | Preprocess (TGlobalData *gData, const TSetupData *gSetup) |
Method called by the main pre-process loop. | |
int | Postprocess (TGlobalData *gData, const TSetupData *gSetup) |
Method called by the main pre-process loop. | |
void | SetAlias (const std::string &alias) |
std::string | GetAlias () const |
const char * | GetName () const |
Get the name of this module as given to the constructor of the base class. | |
Protected Member Functions | |
bool | Debug () const |
TDirectory * | GetDirectory () const |
Get the TDirectory for this module. | |
TDirectory * | GetDirectory (const std::string &name="") |
Protected Attributes | |
TDirectory * | dir |
Private Member Functions | |
virtual int | ProcessEntry (TGlobalData *gData, const TSetupData *gSetup) |
What's calculated for every entry? Don't hesitate to repeat what was said in the class description. | |
virtual int | BeforeFirstEntry (TGlobalData *gData, const TSetupData *setup) |
What needes to be done before each run? Don't hesitate to repeat what was said in the class description. | |
virtual int | AfterLastEntry (TGlobalData *gData, const TSetupData *setup) |
What needs to be done after each run? Don't hesitate to repeat what was said in the class description. | |
void | BookHistograms (const TSetupData *) |
Prepare histograms. | |
Private Attributes | |
std::string | fDetNameA |
Don't forget to forget descirptions for each field... | |
std::string | fDetNameB |
double | fTimeLow |
double | fTimeHigh |
bool | fExportSQL |
std::map< std::string, std::vector< TH2F * > > | fHists |
std::vector< IDs::source > | fDetASources |
std::vector< IDs::source > | fDetBSources |
A one line description of what your module does.
A longer, more descriptive block of text. Specifics like members and methods will be described later. You can add this to other groups instead of rootana_modules or in addition to rootana_modules by adding more of the ingroup tags.
Definition at line 26 of file PlotTAP_TDiff.h.
PlotTAP_TDiff::PlotTAP_TDiff | ( | modules::options * | opts | ) |
Constructor description. If necessary, add a details tag like above.
[in] | opts | Describe the options this module takes. |
Definition at line 26 of file PlotTAP_TDiff.cpp.
00026 : 00027 BaseModule("PlotTAP_TDiff",opts), 00028 fDetNameA(opts->GetString("det1")), fDetNameB(opts->GetString("det2")), 00029 fTimeLow(opts->GetDouble("time_low",-1.e5)), fTimeHigh(opts->GetDouble("time_high",1.e5)), 00030 fExportSQL(opts->GetBool("export_sql", false)) { 00031 if (fDetNameA == std::string("") || fDetNameB == std::string("")) 00032 throw Except::ModulesOptionError("Two detectors must be provided"); 00033 // else if (fDetNameA == fDetNameB) 00034 // throw Except::ModulesOptionError((fDetNameA + "==" + fDetNameB).c_str()); 00035 else if (fExportSQL && fDetNameB != "muSc") 00036 throw Except::ModulesOptionError("If exporting to calibration DB, second detector must be muSc"); 00037 }
PlotTAP_TDiff::~PlotTAP_TDiff | ( | ) |
Is anything done in the destructor?
Definition at line 41 of file PlotTAP_TDiff.cpp.
int PlotTAP_TDiff::AfterLastEntry | ( | TGlobalData * | gData, | |
const TSetupData * | setup | |||
) | [private, virtual] |
What needs to be done after each run? Don't hesitate to repeat what was said in the class description.
[in] | gData | See BaseModule::AfterLastEntry |
[in] | setup | See BaseModule::AfterLastEntry |
Implements BaseModule.
Definition at line 100 of file PlotTAP_TDiff.cpp.
References fDetASources, fExportSQL, fHists, SetupNavigator::Instance(), and SetupNavigator::SetCoarseTimeOffset().
00100 { 00101 if (fExportSQL) { 00102 for (unsigned int i = 0; i < fDetASources.size(); ++i) { 00103 TH1D* h = fHists[fDetASources[i].str()][0]->ProjectionX(); 00104 SetupNavigator::Instance()->SetCoarseTimeOffset(fDetASources[i], h->GetBinCenter(h->GetMaximumBin())); 00105 } 00106 } 00107 return 0; 00108 }
int PlotTAP_TDiff::BeforeFirstEntry | ( | TGlobalData * | gData, | |
const TSetupData * | setup | |||
) | [private, virtual] |
What needes to be done before each run? Don't hesitate to repeat what was said in the class description.
[in] | gData | See BaseModule::BeforeFirstEntry |
[in] | setup | See BaseModule::BeforeFirstEntry |
Implements BaseModule.
Definition at line 46 of file PlotTAP_TDiff.cpp.
References BookHistograms(), fDetASources, fDetBSources, fDetNameA, fDetNameB, and gAnalysedPulseMap.
00046 { 00047 00048 for(SourceAnalPulseMap::const_iterator sourceIt = gAnalysedPulseMap.begin(); 00049 sourceIt != gAnalysedPulseMap.end(); sourceIt++) { 00050 00051 if( sourceIt->first.Channel() != fDetNameA) 00052 continue; //check for detector A 00053 00054 for(SourceAnalPulseMap::const_iterator sourceIt2 = gAnalysedPulseMap.begin(); sourceIt2 != gAnalysedPulseMap.end(); ++sourceIt2) 00055 { 00056 if(sourceIt2->first.Channel() != fDetNameB) 00057 continue; //check for detector B 00058 00059 //I should make a vector of the sources for detA and detB 00060 fDetASources.push_back(sourceIt->first); 00061 fDetBSources.push_back(sourceIt2->first); 00062 break; 00063 } 00064 } 00065 BookHistograms(setup); 00066 return 0; 00067 }
void PlotTAP_TDiff::BookHistograms | ( | const TSetupData * | setup | ) | [private] |
Prepare histograms.
Definition at line 110 of file PlotTAP_TDiff.cpp.
References fDetASources, fDetNameA, fDetNameB, fHists, fTimeHigh, fTimeLow, TSetupData::GetBankName(), and TSetupData::GetNBits().
Referenced by BeforeFirstEntry().
00110 { 00111 for (unsigned int i = 0; i < fDetASources.size(); ++i) { 00112 const std::string gen = fDetASources.at(i).Generator().str(); 00113 const int maxAmpA = std::pow(2, setup->GetNBits(setup->GetBankName(fDetNameA))); 00114 const int maxAmpB = std::pow(2, setup->GetNBits(setup->GetBankName(fDetNameB))); 00115 std::vector<TH2F*>& hists = fHists[fDetASources.at(i).str()]; 00116 00117 //ampA plots 00118 std::string histname("h" + fDetNameB + "_" + fDetASources.at(i).str() + "TDiff_AmpA"); 00119 std::string histtitle("Amplitude of " + fDetNameA + " vs time difference with " + fDetNameB + " detectors with the " + gen + " generator;Time Difference (ns);Amplitude (ADC counts)"); 00120 hists.push_back(new TH2F(histname.c_str(), histtitle.c_str(), 200, fTimeLow, fTimeHigh, 200, 0, maxAmpA)); 00121 00122 //ampB plots 00123 histname = "h" + fDetNameB + "_" + fDetASources.at(i).str() + " TDiff_AmpB"; 00124 histtitle = "Amplitude of " + fDetNameB + " vs time difference with " + fDetNameA + " detectors with the " + gen + " generator;Time Difference (ns);Amplitude (ADC counts)"; 00125 hists.push_back(new TH2F(histname.c_str(), histtitle.c_str(), 200, fTimeLow, fTimeHigh, 200, 0, maxAmpB)); 00126 00127 //intA plots 00128 histname = "h" + fDetNameB + "_" + fDetASources.at(i).str() + " TDiff_IntA"; 00129 histtitle = "Integral of " + fDetNameA + " vs time difference with " + fDetNameB + " detectors with the " + gen + " generator;Time Difference (ns);Integral (ADC counts)"; 00130 hists.push_back(new TH2F(histname.c_str(), histtitle.c_str(), 200, fTimeLow, fTimeHigh, 200, 0, 5*maxAmpA)); 00131 00132 //intB plots 00133 histname = "h" + fDetNameB + "_" + fDetASources.at(i).str() + " TDiff_IntB"; 00134 histtitle = "Integral of " + fDetNameB + " vs time difference with " + fDetNameA + " detectors with the " + gen + " generator;Time Difference (ns);Integral (ADC counts)"; 00135 hists.push_back(new TH2F(histname.c_str(), histtitle.c_str(), 200, fTimeLow, fTimeHigh, 200, 0, 5*maxAmpB)); 00136 00137 } 00138 }
bool BaseModule::Debug | ( | ) | const [inline, protected, inherited] |
Check whether this module was asked to print extra debug information
Definition at line 71 of file BaseModule.h.
References BaseModule::fDebug.
Referenced by MakeAnalysedPulses::AddGenerator(), ExportPulse::AddToExportList(), PulseCandidateFinder_InvestigateParameters::AfterLastEntry(), PlotTPI_PedestalAndNoise::AfterLastEntry(), PlotTDPs::AfterLastEntry(), PlotTDP_TDiff::AfterLastEntry(), IslandLength::AfterLastEntry(), IslandAmplitude::AfterLastEntry(), MakeDetectorPulses::BeforeFirstEntry(), TemplateCreator::BeforeFirstEntry(), PulseCandidateFinder_InvestigateParameters::BeforeFirstEntry(), PlotTPI_PedestalAndNoise::BeforeFirstEntry(), PlotTDPs::BeforeFirstEntry(), PlotTDP_TDiff::BeforeFirstEntry(), IslandLength::BeforeFirstEntry(), IslandAmplitude::BeforeFirstEntry(), PulseViewer::ConsiderDrawing(), MakeAnalysedPulses::MakeAnalysedPulses(), MakeDetectorPulses::MakeGenerator(), ExportPulse::PlotTPI(), MakeDetectorPulses::ProcessEntry(), TemplateCreator::ProcessEntry(), PulseCandidateFinder_InvestigateParameters::ProcessEntry(), MakeAnalysedPulses::ProcessEntry(), PulseViewer::ProcessEntry(), PlotTDP_TDiff::ProcessEntry(), and TemplateCreator::StartTemplate().
00071 {return fDebug;};
std::string BaseModule::GetAlias | ( | ) | const [inline, inherited] |
Returns a string for the alias of this module. May be empty if no alias was given in the modules file.
Definition at line 63 of file BaseModule.h.
References BaseModule::fAlias.
Referenced by BaseModule::BaseModule().
00063 {return fAlias;};
TDirectory * BaseModule::GetDirectory | ( | const std::string & | name = "" |
) | [protected, inherited] |
Definition at line 77 of file BaseModule.cpp.
References BaseModule::dir, and BaseModule::fDirectory.
00077 { 00078 if(name.empty()) return fDirectory; 00079 TDirectory* dir=fDirectory->GetDirectory(name.c_str()); 00080 if(dir) return dir; 00081 return fDirectory->mkdir(name.c_str()); 00082 }
TDirectory* BaseModule::GetDirectory | ( | ) | const [inline, protected, inherited] |
Get the TDirectory for this module.
Definition at line 74 of file BaseModule.h.
References BaseModule::fDirectory.
Referenced by TemplateCreator::AfterLastEntry(), SavePulses::AfterLastEntry(), TemplateCreator::BeforeFirstEntry(), PlotTDPs::BeforeFirstEntry(), ExportPulse::ExportPulse(), and TemplateCreator::ProcessEntry().
00074 {return fDirectory;}
const char* BaseModule::GetName | ( | ) | const [inline, inherited] |
Get the name of this module as given to the constructor of the base class.
Definition at line 66 of file BaseModule.h.
References BaseModule::fName.
Referenced by SavePulses::BeforeFirstEntry(), PlotTDPs::BeforeFirstEntry(), PlotTDP_TDiff::BeforeFirstEntry(), PlotTAP_Time::ProcessEntry(), PlotTAP_Energy::ProcessEntry(), PlotTAP_Amplitude::ProcessEntry(), and LoopSequence::Run().
00066 {return fName.c_str();};
int BaseModule::Postprocess | ( | TGlobalData * | gData, | |
const TSetupData * | gSetup | |||
) | [inherited] |
Method called by the main pre-process loop.
Does some simple work, then hooks into the derived class through AfterLastEntry.
Definition at line 66 of file BaseModule.cpp.
References BaseModule::AfterLastEntry(), and BaseModule::fDirectory.
Referenced by LoopSequence::Postprocess().
00066 { 00067 // This is called by our main routine and would allow later to split into different 00068 // process routines if we have more than one Tree and hence different tpyes of data input. 00069 00070 if(fDirectory) fDirectory->cd(); 00071 int ret = AfterLastEntry(gData, gSetup); 00072 gDirectory->cd("/"); 00073 00074 return ret; 00075 }
int BaseModule::Preprocess | ( | TGlobalData * | gData, | |
const TSetupData * | gSetup | |||
) | [inherited] |
Method called by the main pre-process loop.
Does some simple work, then hooks into the derived class through BeforeFirstEntry.
Definition at line 55 of file BaseModule.cpp.
References BaseModule::BeforeFirstEntry(), and BaseModule::fDirectory.
Referenced by LoopSequence::Preprocess().
00055 { 00056 // This is called by our main routine and would allow later to split into different 00057 // process routines if we have more than one Tree and hence different tpyes of data input. 00058 00059 if(fDirectory) fDirectory->cd(); 00060 int ret = BeforeFirstEntry(gData, gSetup); 00061 gDirectory->cd("/"); 00062 00063 return ret; 00064 }
int PlotTAP_TDiff::ProcessEntry | ( | TGlobalData * | gData, | |
const TSetupData * | gSetup | |||
) | [private, virtual] |
What's calculated for every entry? Don't hesitate to repeat what was said in the class description.
[in] | gData | See BaseModule::ProcessEntry |
[in] | gSetup | See BaseModule::ProcessEntry |
Implements BaseModule.
Definition at line 71 of file PlotTAP_TDiff.cpp.
References fDetASources, fDetBSources, fHists, and gAnalysedPulseMap.
00071 { 00072 00073 for(unsigned int i = 0; i < fDetASources.size(); ++i) { 00074 const AnalysedPulseList& detAPulses = gAnalysedPulseMap[fDetASources[i]]; 00075 const AnalysedPulseList& detBPulses = gAnalysedPulseMap[fDetBSources[i]]; 00076 const std::vector<TH2F*>& hists = fHists[fDetASources[i].str()]; 00077 00078 for(AnalysedPulseList::const_iterator pulseIt = detAPulses.begin(); 00079 pulseIt != detAPulses.end(); ++pulseIt) { 00080 00081 for(AnalysedPulseList::const_iterator pulseIt2 = detBPulses.begin(); 00082 pulseIt2 != detBPulses.end(); ++pulseIt2) { 00083 double tDiff = (*pulseIt)->GetTime() - (*pulseIt2)->GetTime(); 00084 00085 hists[0]->Fill(tDiff, (*pulseIt)->GetAmplitude()); 00086 hists[1]->Fill(tDiff, (*pulseIt2)->GetAmplitude()); 00087 hists[2]->Fill(tDiff, (*pulseIt)->GetIntegral()); 00088 hists[3]->Fill(tDiff, (*pulseIt2)->GetIntegral()); 00089 00090 }//end detBPulse loop 00091 }//end detAPulse loop 00092 }//end sources loop 00093 00094 return 0; 00095 }
int BaseModule::ProcessGenericEntry | ( | TGlobalData * | gData, | |
const TSetupData * | gSetup | |||
) | [inherited] |
Method called by the main event loop for each entry in the input root tree. Does some simple work, then hooks into the derived class through ProcessEntry.
Definition at line 44 of file BaseModule.cpp.
References BaseModule::fDirectory, and BaseModule::ProcessEntry().
Referenced by LoopSequence::Process().
00044 { 00045 // This is called by our main routine and would allow later to split into different 00046 // process routines if we have more than one Tree and hence different tpyes of data input. 00047 00048 if(fDirectory) fDirectory->cd(); 00049 int ret = ProcessEntry(gData, gSetup); 00050 gDirectory->cd("/"); 00051 00052 return ret; 00053 }
void BaseModule::SetAlias | ( | const std::string & | alias | ) | [inline, inherited] |
Sets the alias for this module, which should be provided in the modules file
Definition at line 59 of file BaseModule.h.
References BaseModule::fAlias.
Referenced by BaseModule::BaseModule().
00059 {fAlias=alias;};
TDirectory* BaseModule::dir [protected, inherited] |
Many modules use 'dir' still which was the old protected pointer to the modules directory. To prevent things being broken so soon, we keep this pointer available, but be warned that it will be removed shortly...
Definition at line 98 of file BaseModule.h.
Referenced by BaseModule::BaseModule(), FastSlowCompare::FastSlowCompare(), GeSpectrum::GeSpectrum(), BaseModule::GetDirectory(), MakeMuonEvents::MakeMuonEvents(), and PlotAmpVsTDiff::PlotAmpVsTDiff().
std::vector<IDs::source> PlotTAP_TDiff::fDetASources [private] |
Definition at line 77 of file PlotTAP_TDiff.h.
Referenced by AfterLastEntry(), BeforeFirstEntry(), BookHistograms(), and ProcessEntry().
std::vector<IDs::source> PlotTAP_TDiff::fDetBSources [private] |
Definition at line 77 of file PlotTAP_TDiff.h.
Referenced by BeforeFirstEntry(), and ProcessEntry().
std::string PlotTAP_TDiff::fDetNameA [private] |
Don't forget to forget descirptions for each field...
...and don't hesitate to include details.
Definition at line 71 of file PlotTAP_TDiff.h.
Referenced by BeforeFirstEntry(), and BookHistograms().
std::string PlotTAP_TDiff::fDetNameB [private] |
Definition at line 71 of file PlotTAP_TDiff.h.
Referenced by BeforeFirstEntry(), and BookHistograms().
bool PlotTAP_TDiff::fExportSQL [private] |
Definition at line 73 of file PlotTAP_TDiff.h.
Referenced by AfterLastEntry().
std::map<std::string, std::vector<TH2F*> > PlotTAP_TDiff::fHists [private] |
Definition at line 75 of file PlotTAP_TDiff.h.
Referenced by AfterLastEntry(), BookHistograms(), and ProcessEntry().
double PlotTAP_TDiff::fTimeHigh [private] |
Definition at line 72 of file PlotTAP_TDiff.h.
Referenced by BookHistograms().
double PlotTAP_TDiff::fTimeLow [private] |
Definition at line 72 of file PlotTAP_TDiff.h.
Referenced by BookHistograms().