PlotTAP_TDiff Class Reference
[Modules]

A one line description of what your module does. More...

#include <PlotTAP_TDiff.h>

Inheritance diagram for PlotTAP_TDiff:
BaseModule

List of all members.

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::sourcefDetASources
std::vector< IDs::sourcefDetBSources

Detailed Description

A one line description of what your module does.

Author:
AuthorName

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.


Constructor & Destructor Documentation

PlotTAP_TDiff::PlotTAP_TDiff ( modules::options opts  ) 

Constructor description. If necessary, add a details tag like above.

Parameters:
[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.

00041                               {
00042 }


Member Function Documentation

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.

Parameters:
[in] gData See BaseModule::AfterLastEntry
[in] setup See BaseModule::AfterLastEntry
Returns:
Non-zero to indicate a problem.

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.

Parameters:
[in] gData See BaseModule::BeforeFirstEntry
[in] setup See BaseModule::BeforeFirstEntry
Returns:
Non-zero to indicate a problem.

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]
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]
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.

Returns:
0 on sucess and non-zero if a problem occurred

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.

Returns:
0 on sucess and non-zero if a problem occurred

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.

Parameters:
[in] gData See BaseModule::ProcessEntry
[in] gSetup See BaseModule::ProcessEntry
Returns:
Non-zero to indicate a problem.

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.

Returns:
0 on sucess and non-zero if a problem occurred

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;};


Member Data Documentation

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().


The documentation for this class was generated from the following files:

Generated on 15 Jun 2016 for AlcapDAQ by  doxygen 1.6.1