MCMerge Class Reference

#include <MCMerge.h>

Inheritance diagram for MCMerge:

JobCModule List of all members.

Public Member Functions

 MCMerge ()
 ~MCMerge ()
void BeginJob ()
void EndJob ()
JobCResult Get (MomNavigator *mom)
void Help ()
const RegistryDefaultConfig () const
void Config (const Registry &r)

Private Member Functions

bool GrabStreamEvents (MomNavigator *mom)
Float_t CalcOffsetTime ()
void ClearSimSnarlList ()

Private Attributes

std::list< const SimSnarlRecord * > fSimSnarlList
Float_t fBucketFreqMHz
VldTimeStamp fCurrTS
VldContext fCurrVld
Bool_t fEvtVld
const char * fFirstDateTime
VldTimeStamp fFirstTS
VldContext fFirstVld
Bool_t fFirstVldSet
Double_t fIncSeconds
Int_t fNumBatches
Int_t fNumBuckets
const char * fOutStreamName
Int_t fRandomSeed
TRandom3 * fRanGen
Int_t fRunn
Int_t fSnarlNum
Int_t fSubRunn
Bool_t fUsrVld

Detailed Description

Definition at line 24 of file MCMerge.h.


Constructor & Destructor Documentation

MCMerge::MCMerge (  ) 

Definition at line 57 of file MCMerge.cxx.

References LoadMinosPDG().

00057                  :
00058   fBucketFreqMHz ( 53.1 ),
00059   fCurrTS        ( VldTimeStamp() ),
00060   fCurrVld       ( VldContext() ),
00061   fEvtVld        ( true ),
00062   fFirstTS       ( VldTimeStamp() ),
00063   fFirstVld      ( VldContext() ),
00064   fFirstVldSet   ( false ),
00065   fNumBatches    ( 5 ),
00066   fNumBuckets    ( 86 ),
00067   fOutStreamName ( "SimSnarl" ),
00068   fRandomSeed    ( 0 ),
00069   fRanGen        ( 0 ),
00070   fRunn          ( 1000 ),
00071   fSnarlNum      ( -1 ),
00072   fSubRunn       ( 0 ),
00073   fUsrVld        ( false )
00074 {
00075   //
00076   // Default constructor
00077   //
00078   LoadMinosPDG();  // load minos pdg definitions
00079   
00080 }
//______________________________________________________________________

MCMerge::~MCMerge (  ) 

Definition at line 83 of file MCMerge.cxx.

00084 {
00085   //
00086   // Default destructor
00087   //
00088 
00089 }


Member Function Documentation

void MCMerge::BeginJob (  )  [virtual]

Implement for notification of begin of job

Reimplemented from JobCModule.

Definition at line 93 of file MCMerge.cxx.

References Munits::day, fEvtVld, fFirstDateTime, fFirstTS, fRandomSeed, fRanGen, fUsrVld, Munits::hour, Msg::kDebug, Munits::minute, month, MSG, Munits::second, and Munits::year.

00094 {
00095   //
00096   // Sort out the first VldTimeStamp
00097   //
00098 
00099   std::string strFirstDateTime = fFirstDateTime;
00100   if ( !strFirstDateTime.empty() && strFirstDateTime.length() == 15 ) {
00101     std::string d      =       strFirstDateTime.substr( 0, 1).c_str()  ;
00102     Int_t       year   = atoi( strFirstDateTime.substr( 1, 4).c_str() );
00103     Int_t       month  = atoi( strFirstDateTime.substr( 5, 2).c_str() );
00104     Int_t       day    = atoi( strFirstDateTime.substr( 7, 2).c_str() );
00105     Int_t       hour   = atoi( strFirstDateTime.substr( 9, 2).c_str() );
00106     Int_t       minute = atoi( strFirstDateTime.substr(11, 2).c_str() );
00107     Int_t       second = atoi( strFirstDateTime.substr(13, 2).c_str() );
00108 
00109     // Make sure entered yyyymmddhhmmss are valid values
00110     if (year   > 2038 || year   < 1996) year   = 2038;
00111     if (month  >   12 || month  <    1) month  =    1;
00112     if (day    >   31 || day    <    1) day    =    1;
00113     if (hour   >   23 || hour   <    0) hour   =    0;
00114     if (minute >   59 || minute <    0) minute =    0;
00115     if (second >   59 || second <    0) second =    0;
00116 
00117     // set the 1st TimeStamp according to user input
00118     fFirstTS = VldTimeStamp(year, month,  day,
00119                             hour, minute, second);
00120 
00121     fUsrVld  = true;  // we received a valid time/date from the user
00122     fEvtVld  = false; // user date/time has precedence
00123   } // end if : user entered a valid date/time for 1st output record
00124   
00125   fRanGen = new TRandom3( fRandomSeed ); // initialize the RNG
00126 
00127   MSG("MCMerge",Msg::kDebug)
00128     << "Initial MCMerge random seed : " << fRanGen->GetSeed() << endl;
00129 
00130 }

Float_t MCMerge::CalcOffsetTime (  )  [private]

Definition at line 151 of file MCMerge.cxx.

References fBucketFreqMHz, fNumBatches, fNumBuckets, and fRanGen.

Referenced by Get().

00152 {
00153 
00154   // Assume fNumBucket buckets (default 86), fNumBatches (default 5), and
00155   // each bucket (1/53.1 MHz) wide, equally filled & equally
00156   // spaced, and each uniform.
00157 
00158   const Float_t bucketWidthns = (1.e3)/fBucketFreqMHz;
00159   const Float_t batchWidthns  = fNumBuckets*bucketWidthns;
00160 
00161   const Int_t   nBucket       = fRanGen->Integer(fNumBuckets);
00162   const Int_t   nBatch        = fRanGen->Integer(fNumBatches);
00163   const Float_t bucketOffsetT = fRanGen->Uniform(bucketWidthns);
00164 
00165   return ( Float_t(nBucket) * bucketWidthns +
00166            Float_t(nBatch)  * batchWidthns  +
00167            bucketOffsetT                    ); //ns
00168 
00169 }

void MCMerge::ClearSimSnarlList (  )  [private]

Definition at line 173 of file MCMerge.cxx.

References fSimSnarlList.

Referenced by Get().

00174 {
00175   //
00176   // Clear the fSimSnarlList without creating a massive memory leak!
00177   //
00178 
00179   if ( fSimSnarlList.empty() ) return;
00180 
00181   for (mcmVecItr it = fSimSnarlList.begin(); it != fSimSnarlList.end(); it++) {
00182     if ( !(*it) ) continue;  // already null
00183     delete (*it); (*it) = 0; // delete the object & null the ptr
00184   } // end loop over vector of SimSnarlRecord ptrs
00185 
00186   fSimSnarlList.clear(); // empty the vector
00187 
00188 }

void MCMerge::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 456 of file MCMerge.cxx.

References fBucketFreqMHz, fEvtVld, fFirstDateTime, fIncSeconds, fNumBatches, fNumBuckets, fOutStreamName, fRandomSeed, fRunn, fSubRunn, Registry::GetCharString(), Registry::GetDouble(), Registry::GetInt(), Msg::kVerbose, and MSG.

00457 {
00458   //
00459   // Configure the module given the Registry r
00460   //
00461 
00462   MSG("MCMerge",Msg::kVerbose) << "In MCMerge::Config" << endl;
00463 
00464   fBucketFreqMHz = r.GetDouble("BucketFreqMHz");
00465   fEvtVld        = r.GetInt("EvtVld");
00466   fFirstDateTime = r.GetCharString("FirstDateTime");
00467   fIncSeconds    = r.GetDouble("DeltaT");
00468   fOutStreamName = r.GetCharString("OutStreamName");
00469   fRandomSeed    = r.GetInt("RandomSeed");
00470   fRunn          = r.GetInt("Runn");
00471   fNumBatches    = r.GetInt("NumBatches");
00472   fNumBuckets    = r.GetInt("NumBuckets");
00473   fSubRunn       = r.GetInt("SubRunn");
00474 
00475 }

const Registry & MCMerge::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 422 of file MCMerge.cxx.

References JobCModule::GetName(), Msg::kVerbose, Registry::LockValues(), MSG, Registry::Set(), and Registry::UnLockValues().

00423 {
00424   //
00425   // Supply the default configuration for the module
00426   //
00427   MSG("MCMerge",Msg::kVerbose) << "In MCMerge::DefaultConfig" << endl;
00428 
00429   static Registry r; // Default configuration for module
00430 
00431   // Set name of config
00432   std::string name = this->GetName();
00433   name += ".config.default";
00434   r.SetName(name.c_str());
00435 
00436   // Set values in configuration
00437   r.UnLockValues();
00438   r.Set("BucketFreqMHz",53.1); // bucket frequency
00439   r.Set("EvtVld",1);           // 1st vld is pulled from input events by default
00440   r.Set("FirstDateTime","");   // empty
00441   r.Set("DeltaT",1.9);         // default 1.9 seconds between spills
00442   r.Set("OutStreamName",
00443         "SimSnarl");           // generically the name of the class
00444   r.Set("RandomSeed",0);       // random seed
00445   r.Set("Runn",1000);          // run number
00446   r.Set("NumBatches",5);       // # batches of (NumBuckets) buckets
00447   r.Set("NumBuckets",86);      // # (1/.53.1MHz width) buckets in spill window
00448   r.Set("SubRunn",0);          // subrun number
00449   r.LockValues();
00450 
00451   return r;
00452 }

void MCMerge::EndJob (  )  [virtual]

Implement for notification of end of job

Reimplemented from JobCModule.

Definition at line 134 of file MCMerge.cxx.

00135 {
00136   //
00137   // Give a summary (if appropriate)
00138   //
00139 
00140   /*
00141   MSG("MCMerge", Msg::kInfo)
00142     << std::string(75,'*') << endl
00143     << "MCMerge Summary: " << endl
00144     << std::string(75,'*') << endl
00145     << endl;
00146   */
00147 }

JobCResult MCMerge::Get ( MomNavigator mom  )  [virtual]

Implement if your module needs to read data from some external source and fill mom

Reimplemented from JobCModule.

Definition at line 246 of file MCMerge.cxx.

References VldTimeStamp::Add(), RecDataRecord< T >::AdoptComponent(), MomNavigator::AdoptFragment(), CalcOffsetTime(), ClearSimSnarlList(), ConcatArrays::ConcatDigiScintHits(), ConcatArrays::ConcatFluxInfo(), ConcatArrays::ConcatFluxWgt(), ConcatArrays::ConcatNuEvtKin(), ConcatArrays::ConcatNuKin(), ConcatArrays::ConcatStdHep(), fCurrTS, fCurrVld, fEvtVld, fFirstTS, fFirstVld, fFirstVldSet, fIncSeconds, fOutStreamName, fRandomSeed, fRanGen, fRunn, fSimSnarlList, fSnarlNum, fSubRunn, fUsrVld, VldContext::GetDetector(), VldTimeStamp::GetSec(), VldContext::GetSimFlag(), RecRecordImp< T >::GetTempTags(), VldContext::GetTimeStamp(), GrabStreamEvents(), gSystem(), hostname, MsgService::Instance(), JobCResult::kAOK, JobCResult::kFailed, Msg::kInfo, Msg::kVerbose, MSG, ConcatArrays::OffsetTime(), run(), Registry::Set(), and SimSnarlHeader::TrimCodename().

00247 {
00248   //
00249   // Take all events pushed to mom from each input stream and push the
00250   // merged SimSnarlRecord to MomNavigator
00251   //
00252   // Merged SimSnarlRecord will only contain:
00253   // DigiScintHits, FluxInfo, FluxWgt, (NuEvtKin), NuKin, and StdHep
00254   //
00255 
00256   if ( !GrabStreamEvents(mom) )
00257     return JobCResult::kFailed; // Yes: fail if there are no SimSnarlRecords!!
00258 
00259   if ( fFirstVldSet ) {
00260     // Increment the base VldTimeStamp & VldContext for this output snarl
00261     fCurrTS.Add(fIncSeconds); 
00262     fCurrVld = VldContext( fCurrVld.GetDetector(),
00263                            fCurrVld.GetSimFlag(),
00264                            fCurrTS               );
00265   } // end if : we incremented the current base timestamp
00266   else {
00267     // We need to set the 1st VldContext & VldTimeStamp
00268     VldContext firstEvtVld = 
00269       (fSimSnarlList.front())->GetSimSnarlHeader()->GetVldContext();
00270     
00271     // Get the correct detector from the input MC
00272     Detector::Detector_t detector = firstEvtVld.GetDetector();
00273 
00274     // Get the correct simFlag from the input MC
00275     SimFlag::SimFlag_t   simFlag  = firstEvtVld.GetSimFlag();
00276 
00277     // Did we get a timestamp from the user?
00278     if (fUsrVld)
00279       fFirstVld = VldContext(detector, simFlag, fFirstTS);
00280     // Did the user override grabbing the VldContext from the input events?
00281     // If so, use 'now'
00282     else if (!fEvtVld)
00283       fFirstVld = VldContext(detector, simFlag, VldTimeStamp());
00284     // Otherwise we use the 1st VldContext encountered from the input events
00285     else
00286       fFirstVld = firstEvtVld;
00287 
00288     fCurrVld     = fFirstVld;
00289     fCurrTS      = fFirstVld.GetTimeStamp();
00290     fFirstVldSet = true;
00291 
00292     MSG("MCMerge",Msg::kInfo) << "\nMCMerge: First VldContext set "
00293                               << fFirstVld << endl << endl;
00294   } // end else : we have now set the first output VldContext
00295 
00296   // Create a seed for our output SimSnarlRecord
00297   // (pull the following from the input events)
00298   Int_t   run       = fRunn;
00299   Int_t   subrun    = fSubRunn;
00300   Short_t runtype   = 0;
00301   UInt_t  errcode   = 0;
00302   Int_t   snarl     = ++fSnarlNum;
00303   UInt_t  trigsrc   = 0;
00304   Int_t   timeframe = fCurrTS.GetSec() - fFirstTS.GetSec();
00305   Int_t   spilltype = -1;
00306 
00307   if (fRandomSeed != 0) fRanGen->SetSeed(run*10000+subrun+snarl+42);
00308 
00309   VldTimeStamp mcGenTS;
00310   std::string  codename = SimSnarlHeader::TrimCodename("$Name:  $");
00311   std::string  hostname(gSystem->HostName());
00312   /*
00313   MAXMSG("MCMerge",Msg::kWarning,10)
00314     << "using 'now' " << mcGenTS.AsString("sql")
00315     << " for generation timestamp, local machine, & tag"
00316     << endl;
00317   */
00318   // the last three should come from the input data not just locally
00319   // generated ... though what to do if the overlay files are different?
00320 
00321   SimSnarlHeader simheader(fCurrVld,run,subrun,runtype,errcode,
00322                            snarl,trigsrc,timeframe,spilltype,
00323                            mcGenTS,codename,hostname);
00324 
00325   SimSnarlRecord* record = new SimSnarlRecord(simheader);
00326 
00327   MSG("MCMerge",Msg::kVerbose)
00328     << "New SimSnarlRecord\n" << simheader << endl;
00329 
00330   // Loop over our list of input snarls and
00331   // add them to the SimSnarlRecord components
00332   TClonesArray* digiScintHitsList = new TClonesArray("DigiScintHit",1);
00333   digiScintHitsList->SetName("DigiScintHits");
00334 #ifdef EVENT_KINEMATICS_PKGS
00335   TClonesArray* nuEvtKinList      = new TClonesArray("NuEvtKin",1);
00336   nuEvtKinList->SetName("NuEvtKinList");
00337 #endif
00338   TClonesArray* nuKinList         = new TClonesArray("REROOT_NeuKin",1);
00339   nuKinList->SetName("NeuKinList");
00340 
00341   TClonesArray* stdHepList        = new TClonesArray("TParticle",1);
00342   stdHepList->SetName("StdHep");
00343 
00344   TClonesArray* fluxInfoList      = new TClonesArray("REROOT_FluxInfo",1);
00345   fluxInfoList->SetName("FluxInfoList");
00346 
00347   TClonesArray* fluxWgtList       = new TClonesArray("REROOT_FluxWgt",1);
00348   fluxWgtList->SetName("FluxWgtList");
00349 
00350   for (mcmVecItr itr = fSimSnarlList.begin();
00351        itr != fSimSnarlList.end(); itr++) {
00352     const SimSnarlRecord* ssr = (*itr);
00353 
00354     TClonesArray* thisDigiScintHits =
00355       dynamic_cast<TClonesArray*>(const_cast<TObject*>(ssr->FindComponent("TClonesArray","DigiScintHits")));
00356     TClonesArray* thisStdHep =
00357       dynamic_cast<TClonesArray*>(const_cast<TObject*>(ssr->FindComponent("TClonesArray","StdHep")));
00358 #ifdef EVENT_KINEMATICS_PKGS
00359     TClonesArray* thisNuEvtKin =
00360       dynamic_cast<TClonesArray*>(const_cast<TObject*>(ssr->FindComponent("TClonesArray","NuEvtKinList")));
00361 #endif
00362     TClonesArray* thisNuKin =
00363       dynamic_cast<TClonesArray*>(const_cast<TObject*>(ssr->FindComponent("TClonesArray","NeuKinList")));
00364     TClonesArray* thisFluxInfo =
00365       dynamic_cast<TClonesArray*>(const_cast<TObject*>(ssr->FindComponent("TClonesArray","FluxInfoList")));
00366     TClonesArray* thisFluxWgt =
00367       dynamic_cast<TClonesArray*>(const_cast<TObject*>(ssr->FindComponent("TClonesArray","FluxWgtList")));
00368 
00369     // randomly place the events within the spill window
00370     const Float_t offsetns = CalcOffsetTime();
00371 
00372     OffsetTime(thisDigiScintHits, offsetns);
00373     OffsetTime(thisStdHep,        offsetns);
00374 #ifdef EVENT_KINEMATICS_PKGS
00375     OffsetTime(thisNuEvtKin,      offsetns);
00376 #endif
00377     OffsetTime(thisNuKin,         offsetns);
00378     OffsetTime(thisFluxInfo,      offsetns);
00379     OffsetTime(thisFluxWgt,       offsetns);
00380 
00381     const Int_t permStdHepSz = stdHepList->GetEntriesFast();
00382 
00383     ConcatDigiScintHits(thisDigiScintHits, digiScintHitsList,
00384                         permStdHepSz);
00385     ConcatStdHep       (thisStdHep,        stdHepList);
00386 #ifdef EVENT_KINEMATICS_PKGS
00387     ConcatNuEvtKin     (thisNuEvtKin,      nuEvtKinList, stdHepList);
00388 #endif
00389     ConcatNuKin        (thisNuKin,         nuKinList);
00390     ConcatFluxInfo     (thisFluxInfo,      fluxInfoList);
00391     ConcatFluxWgt      (thisFluxWgt,       fluxWgtList);
00392   } // end loop over our input SimSnarlRecord list
00393 
00394   // Empty our local list of SimSnarlRecords (don't need them anymore)
00395   ClearSimSnarlList(); 
00396 
00397   // Give our merged components to the record to own
00398   record->AdoptComponent(digiScintHitsList);
00399   record->AdoptComponent(nuKinList);
00400   record->AdoptComponent(stdHepList);
00401   record->AdoptComponent(fluxInfoList);
00402   record->AdoptComponent(fluxWgtList);
00403 #ifdef EVENT_KINEMATICS_PKGS
00404   record->AdoptComponent(nuEvtKinList);
00405 #endif
00406 
00407   // Give the SimSnarlRecord to MomNavigator to hold as a "fragment"
00408   record->GetTempTags().Set("stream",fOutStreamName);
00409   mom->AdoptFragment(record);
00410 
00411   // Reset the run# on future MsgService calls.
00412   (MsgService::Instance())->SetCurrentRunSnarl(fRunn, fSnarlNum);
00413 
00414   MSG("MCMerge", Msg::kVerbose)
00415     << "MomNavigator contents: " << (*mom) << endl;
00416 
00417   return JobCResult::kAOK; // Done
00418 }

bool MCMerge::GrabStreamEvents ( MomNavigator mom  )  [private]

Definition at line 192 of file MCMerge.cxx.

References VldTimeStamp::AsString(), MomNavigator::Clear(), fSimSnarlList, Registry::Get(), MomNavigator::GetFragmentList(), RecDataHeader::GetRun(), SimSnarlRecord::GetSimSnarlHeader(), RecRecordImp< T >::GetTempTags(), VldContext::GetTimeStamp(), RecRecordImp< T >::GetVldContext(), Msg::kDebug, Msg::kVerbose, and MSG.

Referenced by Get().

00193 {
00194 
00195   std::vector<TObject*> fragList      = mom->GetFragmentList();
00196   const Int_t           kNumFragments = fragList.size();
00197 
00198   std::string momFragString;
00199   for (std::vector<TObject*>::const_iterator it = fragList.begin();
00200        it != fragList.end(); ++it) {
00201     // Only want SimSnarlRecords
00202     if ( std::string((*(*it)).ClassName()) != "SimSnarlRecord") continue;
00203 
00204     const char* streamName;
00205     SimSnarlRecord* temssr = dynamic_cast<SimSnarlRecord*>( (*it) );
00206     temssr->GetTempTags().Get( "stream", streamName );
00207     momFragString +=
00208       "\n" + std::string(streamName) + " (" +
00209       std::string(temssr->ClassName()) + ")" +
00210       " with timestamp: ";
00211     momFragString +=
00212       std::string( temssr->GetVldContext()->GetTimeStamp().AsString() );
00213     std::ostringstream runnss; 
00214     runnss << temssr->GetSimSnarlHeader()->GetRun();
00215     momFragString += " (run number " + runnss.str() + ")";
00216 
00217     if (it+1 != fragList.end())
00218       momFragString += ", ";
00219 
00220     if ( std::string(streamName) == "signal")
00221       fSimSnarlList.push_front( dynamic_cast<SimSnarlRecord*>( (*it)->Clone() ) );
00222     else
00223       fSimSnarlList.push_back( dynamic_cast<SimSnarlRecord*>( (*it)->Clone() ) );
00224   }
00225   MSG("MCMerge", Msg::kDebug) << "MomNavigator had "
00226                               << kNumFragments
00227                               << " fragments"
00228                               << ( (kNumFragments>0)? ": " : "" )
00229                               << momFragString
00230                               << endl;
00231 
00232   // Remove mom's input SimSnarlRecords so BadThings(TM) don't happen later
00233   if ( !fSimSnarlList.empty() ) {
00234     mom->Clear();
00235     MSG("MCMerge", Msg::kVerbose)
00236       << "MomNavigator Cleared ; MCMerge owns "
00237       << fSimSnarlList.size() << " SimSnarlRecords" << endl
00238       << "MomNavigator contents: " << (*mom) << endl;
00239   }
00240 
00241   return ( !fSimSnarlList.empty() );
00242 }

void MCMerge::Help (  )  [virtual]

Implement to spew some useful help to cout

Reimplemented from JobCModule.

Definition at line 479 of file MCMerge.cxx.

00480 {
00481   //
00482   // Config() settings
00483   //
00484 
00485   cout << "Adjustable parameters and default settings:" << endl
00486        << "BucketFreqMHz (53.1)     -- Used to distribute events " << endl
00487        << "                            w/in the snarl window" << endl
00488        << "NumBatches (5)           -- Used to distribute events " << endl
00489        << "                            w/in the snarl window" << endl
00490        << "NumBuckets (86)          -- Used to distribute events " << endl
00491        << "                            w/in the snarl window." << endl
00492        << "The snarl window is NumBatches*NumBuckets/BucketFreqMHz uS wide"
00493        << endl
00494        << "Runn (1000)              -- Output run number" << endl
00495        << "SubRunn (0)              -- Output subrun number" << endl
00496        << endl
00497        << "DeltaT (1.9)             -- The time between timestamps of"
00498        << "                            output snarls (s)"
00499        << endl
00500        << "OutStreamName (SimSnarl) -- Name of the SimSnarlRecord stream "
00501        << endl
00502        << "                            given to MomNavigator for further "
00503        << endl
00504        << "                            processing" << endl
00505        << "EvtVld (1)               -- Determine 1st output VldContext "
00506        << endl
00507        << "                            from 1st input MC event" << endl
00508        << "FirstDateTime (\"\")       -- If filled, this will be the first "
00509        << endl
00510        << "                            VldContext timestamp" << endl
00511        << "If EvtVld == 0 and FirstDateTime == \"\" then the first output "
00512        << endl
00513        << "  VldContext will have the 1st date/time encountered in the input" << endl
00514        << endl;
00515 }


Member Data Documentation

Float_t MCMerge::fBucketFreqMHz [private]

Definition at line 57 of file MCMerge.h.

Referenced by CalcOffsetTime(), and Config().

VldTimeStamp MCMerge::fCurrTS [private]

Definition at line 58 of file MCMerge.h.

Referenced by Get().

VldContext MCMerge::fCurrVld [private]

Definition at line 59 of file MCMerge.h.

Referenced by Get().

Bool_t MCMerge::fEvtVld [private]

Definition at line 60 of file MCMerge.h.

Referenced by BeginJob(), Config(), and Get().

const char* MCMerge::fFirstDateTime [private]

Definition at line 61 of file MCMerge.h.

Referenced by BeginJob(), and Config().

VldTimeStamp MCMerge::fFirstTS [private]

Definition at line 62 of file MCMerge.h.

Referenced by BeginJob(), and Get().

VldContext MCMerge::fFirstVld [private]

Definition at line 63 of file MCMerge.h.

Referenced by Get().

Bool_t MCMerge::fFirstVldSet [private]

Definition at line 64 of file MCMerge.h.

Referenced by Get().

Double_t MCMerge::fIncSeconds [private]

Definition at line 65 of file MCMerge.h.

Referenced by Config(), and Get().

Int_t MCMerge::fNumBatches [private]

Definition at line 66 of file MCMerge.h.

Referenced by CalcOffsetTime(), and Config().

Int_t MCMerge::fNumBuckets [private]

Definition at line 67 of file MCMerge.h.

Referenced by CalcOffsetTime(), and Config().

const char* MCMerge::fOutStreamName [private]

Definition at line 68 of file MCMerge.h.

Referenced by Config(), and Get().

Int_t MCMerge::fRandomSeed [private]

Definition at line 69 of file MCMerge.h.

Referenced by BeginJob(), Config(), and Get().

TRandom3* MCMerge::fRanGen [private]

Definition at line 70 of file MCMerge.h.

Referenced by BeginJob(), CalcOffsetTime(), and Get().

Int_t MCMerge::fRunn [private]

Definition at line 71 of file MCMerge.h.

Referenced by Config(), and Get().

std::list< const SimSnarlRecord* > MCMerge::fSimSnarlList [private]

Definition at line 54 of file MCMerge.h.

Referenced by ClearSimSnarlList(), Get(), and GrabStreamEvents().

Int_t MCMerge::fSnarlNum [private]

Definition at line 72 of file MCMerge.h.

Referenced by Get().

Int_t MCMerge::fSubRunn [private]

Definition at line 73 of file MCMerge.h.

Referenced by Config(), and Get().

Bool_t MCMerge::fUsrVld [private]

Definition at line 74 of file MCMerge.h.

Referenced by BeginJob(), and Get().


The documentation for this class was generated from the following files:
Generated on Mon Nov 10 00:55:44 2014 for loon by  doxygen 1.4.7