Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

jobc::Node Class Reference

A node is the smallest unit of analysis and/or reconstruction code that defines a job. More...

#include <Node.h>

Inheritance diagram for jobc::Node:

jobc::Sequence jobc::Job List of all members.

Public Member Functions

 Node ()
 Node (const char *name, const char *ver="default", bool isSeq=false)
 Node (const Node &n)
virtual ~Node ()
const char * Name () const
const char * FolderName () const
bool IsSequence () const
void SetFilter (bool onoff=true)
void ReverseFilter (bool onoff=true)
void ActivateReco (bool onoff=true)
void ActivateAna (bool onoff=true)
void StepInToFolder () const
void StepOutOfFolder () const
Nodeoperator= (const Node &rhs)
ModuleGetModule ()
virtual NodeGetNode (const char *)
virtual bool Exec (edm::EventHandle &evt)
virtual void Print (const char *indent=0) const
virtual void ResourceReport (bool printheader=false) const
double AnaTime () const
double RecoTime () const

Protected Attributes

ModulefModule
bool fIsSequence
std::string fName
 Name of module/node.

std::string fVersion
 Configuration version used by module.

std::string fFolderName
 Name of folder used for histogram output.

bool fFilterActive
 Are the filters active?

bool fFilterReversed
 Reverse the meanings of pass/fail?

bool fRecoActive
 Run the Reco method?

bool fAnaActive
 Run the Ana method?

unsigned int fNpassReco
 # of events which passed Reco method

unsigned int fNfailReco
 # of events which passed Reco method

unsigned int fNpassAna
 # of events which passed Ana method

unsigned int fNfailAna
 # of events which failed Ana method

Resource fResourceAna
 Resources used by Ana method.

Resource fResourceReco
 Resources used by Reco method.


Detailed Description

A node is the smallest unit of analysis and/or reconstruction code that defines a job.

Definition at line 21 of file Node.h.


Constructor & Destructor Documentation

Node::Node  ) 
 

Definition at line 23 of file Node.cxx.

Referenced by jobc::Sequence::PushBack(), and jobc::Sequence::PushFront().

00023            :
00024   fModule         ( 0     ),
00025   fIsSequence     ( false ),
00026   fName           ( "*"   ),
00027   fVersion        ( "*"   ),
00028   fFolderName     ( "?"   ),
00029   fFilterActive   ( true  ),
00030   fFilterReversed ( false ),
00031   fRecoActive     ( true  ),
00032   fAnaActive      ( true  ),
00033   fNpassReco      ( 0     ),
00034   fNfailReco      ( 0     ),
00035   fNpassAna       ( 0     ),
00036   fNfailAna       ( 0     )
00037 { }

Node::Node const char *  name,
const char *  ver = "default",
bool  isSeq = false
 

Definition at line 41 of file Node.cxx.

References fFolderName, fIsSequence, and fVersion.

00041                                                             : 
00042   fModule         ( 0       ),
00043   fIsSequence     ( isSeq   ),
00044   fName           ( name    ),
00045   fVersion        ( version ),
00046   fFolderName     ( ""      ),
00047   fFilterActive   ( true    ),
00048   fFilterReversed ( false   ),
00049   fRecoActive     ( true    ),
00050   fAnaActive      ( true    ),
00051   fNpassReco      ( 0       ),
00052   fNfailReco      ( 0       ),
00053   fNpassAna       ( 0       ),
00054   fNfailAna       ( 0       )
00055 { 
00056   // strip ':' (which come from namespaces) from folder names
00057   for (int i=0; name[i]!='\0'; ++i)
00058     if (name[i] != ':') fFolderName += name[i];
00059 
00060   // Attach version to folder name if its not 'default'
00061   if (fIsSequence==false && fVersion!="default") {
00062 
00063     fFolderName += "_";
00064     fFolderName += fVersion;
00065   }
00066 
00067 }

Node::Node const Node n  ) 
 

Definition at line 71 of file Node.cxx.

00071                         :
00072   fModule         ( 0     ),
00073   fIsSequence     ( false ),
00074   fName           ( "*"   ),
00075   fVersion        ( "*"   ),
00076   fFolderName     ( "?"   ),
00077   fFilterActive   ( true  ),
00078   fFilterReversed ( false ),
00079   fRecoActive     ( true  ),
00080   fAnaActive      ( true  ),
00081   fNpassReco      ( 0     ),
00082   fNfailReco      ( 0     ),
00083   fNpassAna       ( 0     ),
00084   fNfailAna       ( 0     ),
00085   fResourceAna    (n.fResourceAna),
00086   fResourceReco   (n.fResourceReco)
00087 { *this = n; }

Node::~Node  )  [virtual]
 

Definition at line 91 of file Node.cxx.

References fModule, and StepInToFolder().

00092 {
00093   if (fModule) { 
00094     this->StepInToFolder();
00095     delete fModule;
00096     fModule = 0;
00097     HistoFile::StepOut();
00098   }
00099 }


Member Function Documentation

void jobc::Node::ActivateAna bool  onoff = true  )  [inline]
 

Definition at line 35 of file Node.h.

References fAnaActive.

Referenced by jobc::nodeBuilder::Build(), and testJobCNode().

00035 { fAnaActive      = onoff; }

void jobc::Node::ActivateReco bool  onoff = true  )  [inline]
 

Definition at line 34 of file Node.h.

References fRecoActive.

Referenced by jobc::nodeBuilder::Build(), and testJobCNode().

00034 { fRecoActive     = onoff; }

double Node::AnaTime  )  const
 

Definition at line 103 of file Node.cxx.

Referenced by jobc::Sequence::Print().

00103                             {
00104   return fResourceAna.stime+fResourceAna.utime;
00105 }

bool Node::Exec edm::EventHandle evt  )  [virtual]
 

Reimplemented in jobc::Sequence.

Definition at line 174 of file Node.cxx.

References jobc::Module::Ana(), jobc::Resource::Difference(), fAnaActive, fFilterActive, fFilterReversed, fNfailAna, fNfailReco, fNpassAna, fNpassReco, fRecoActive, fResourceAna, fResourceReco, GetModule(), jobc::Resource::Log(), jobc::Module::Reco(), jobc::Result, StepInToFolder(), StepOutOfFolder(), and jobc::Resource::Sum().

00175 {
00176 //======================================================================
00177 // Run the Ana/Reco methods for the module
00178 //======================================================================
00179   bool     passed     = true;
00180   Result   passedReco = kPassed;
00181   Result   passedAna  = kPassed;
00182   Resource r0;
00183   Resource r1;
00184   if (fRecoActive) {
00185     // Execute the method
00186     this->StepInToFolder();
00187     r0.Log();
00188     passedReco = this->GetModule()->Reco(evt);
00189     r1.Log();
00190     r1.Difference(r0);
00191     fResourceReco.Sum(r1);
00192     this->StepOutOfFolder();
00193     if (passedReco==kPassed) ++fNpassReco;
00194     else                     ++fNfailReco;
00195   }
00196   if (fAnaActive) {
00197     this->StepInToFolder();
00198     r0.Log();
00199     passedAna = this->GetModule()->Ana(evt);
00200     r1.Log();
00201     r1.Difference(r0);
00202     fResourceAna.Sum(r1);
00203     this->StepOutOfFolder();
00204     if (passedAna==kPassed) ++fNpassAna;
00205     else                    ++fNfailAna;
00206   }
00207   
00208   // No filters active, pass all events
00209   if (fFilterActive==false) return true;
00210 
00213   // if (fFilterMode == kRecoOnly)         passed = passedReco;
00214   // if (fFilterMode == kAnaOnly )         passed = passedAna;
00215   // if (fFilterMode == kRecoAndAna)       passed = passedReco&passedAna;
00216   // if (fFilterMode == kRecoOrAna)        passed = passedReco|passedAna;
00217   // if (fFilterMode == kRecoAndNotAna)    passed = passedReco&(!passedAna);
00218   // if (fFilterMode == kNotRecoAndAna)    passed = (!passedReco)&passedAna;
00219 
00220   // For now consider an event failed if either Reco or Ana fail the
00221   // event
00222   passed = true;
00223   if (fRecoActive && (passedReco==kFailed)) passed = false;
00224   if (fAnaActive  && (passedAna ==kFailed)) passed = false;
00225 
00226   if (fFilterReversed) return !passed; // Flip pass/fail
00227   return                       passed; // Normal case
00228 }

const char* jobc::Node::FolderName  )  const [inline]
 

Definition at line 29 of file Node.h.

References fFolderName.

00029 { return fFolderName.c_str(); }

Module * Node::GetModule  ) 
 

Definition at line 115 of file Node.cxx.

References fModule, fName, fVersion, jobc::ModuleMaker_t, StepInToFolder(), and StepOutOfFolder().

Referenced by jobc::Sequence::EndFile(), jobc::Sequence::EndRun(), jobc::Sequence::EndSubrun(), Exec(), jobc::Sequence::NewFile(), jobc::Sequence::NewRun(), and jobc::Sequence::NewSubrun().

00116 {
00117 //======================================================================
00118 // Return the module associated with this node
00119 //======================================================================
00120   if (fModule==0) {
00121     ModuleMaker_t mm = ModuleFactory::Instance().LookUp(fName.c_str());
00122     if (mm==0) {
00123       std::cerr << "JobCNode:" << __LINE__ 
00124                 << " Unable to find module " << fName.c_str() << std::endl;
00125       abort();
00126       return 0;
00127     }
00128     this->StepInToFolder();
00129     fModule = (*mm)(fVersion.c_str()); // Build the module
00130     this->StepOutOfFolder();
00131   }
00132   return fModule;
00133 }

virtual Node* jobc::Node::GetNode const char *   )  [inline, virtual]
 

Reimplemented in jobc::Sequence.

Definition at line 43 of file Node.h.

00043 { return this; }

bool jobc::Node::IsSequence  )  const [inline]
 

Definition at line 30 of file Node.h.

References fIsSequence.

Referenced by jobc::sequenceBuilder::Build(), jobc::jobBuilder::Build(), jobc::Sequence::EndFile(), jobc::Sequence::EndRun(), jobc::Sequence::EndSubrun(), jobc::Sequence::NewFile(), jobc::Sequence::NewRun(), jobc::Sequence::NewSubrun(), jobc::Sequence::operator=(), jobc::Sequence::Print(), and jobc::Sequence::ResourceReport().

00030 { return fIsSequence;         }

const char* jobc::Node::Name  )  const [inline]
 

Definition at line 28 of file Node.h.

References fName.

Referenced by jobc::Sequence::GetNode(), jobc::SeqTable::Insert(), jobc::Sequence::Print(), and jobc::Job::Run().

00028 { return fName.c_str();       }

Node & Node::operator= const Node rhs  ) 
 

Definition at line 137 of file Node.cxx.

References fAnaActive, fFilterActive, fFilterReversed, fFolderName, fIsSequence, fModule, fName, fNfailAna, fNfailReco, fNpassAna, fNpassReco, fRecoActive, fVersion, StepInToFolder(), and StepOutOfFolder().

00138 {
00139   if (fModule) {
00140     this->StepInToFolder();
00141     delete fModule;
00142     this->StepOutOfFolder();
00143   }
00144   fModule         = 0;
00145   fIsSequence     = rhs.fIsSequence;
00146   fName           = rhs.fName;
00147   fVersion        = rhs.fVersion;
00148   fFolderName     = rhs.fFolderName;
00149   fFilterActive   = rhs.fFilterActive;
00150   fFilterReversed = rhs.fFilterReversed;
00151   fRecoActive     = rhs.fRecoActive;
00152   fAnaActive      = rhs.fAnaActive;
00153   fNpassReco      = 0;
00154   fNfailReco      = 0;
00155   fNpassAna       = 0;
00156   fNfailAna       = 0;
00157   return *this;
00158 }

void Node::Print const char *  indent = 0  )  const [virtual]
 

Definition at line 232 of file Node.cxx.

References fAnaActive, fFilterActive, fFilterReversed, fName, fNfailAna, fNfailReco, fNpassAna, fNpassReco, fRecoActive, fResourceAna, fResourceReco, fVersion, jobc::Resource::stime, and jobc::Resource::utime.

Referenced by jobc::Sequence::Print(), and testJobCNode().

00233 {
00234   const char*                             filterStr = " ";
00235   if ( fFilterActive && !fFilterReversed) filterStr = "+";
00236   if ( fFilterActive &&  fFilterReversed) filterStr = "!";
00237 
00238   const char*      recoStr = "-reco";
00239   if (fRecoActive) recoStr = "+reco";
00240 
00241   const char*     anaStr = "-ana ";
00242   if (fAnaActive) anaStr = "+ana ";
00243   
00244   std::string mod("");
00245   if (indent) mod += indent;
00246   mod += filterStr;
00247   mod += fName; 
00248   mod += "/"; 
00249   mod += fVersion; 
00250   mod += "/";
00251   
00252   char buff[256];
00253   sprintf(buff,
00254           "%-32s %s/%.5d/%.5d/%.5d %.2e/%.2e\n"
00255           "%-32s %s/%.5d/%.5d/%.5d %.2e/%.2e",
00256           mod.c_str(),
00257           recoStr,
00258           fNpassReco,
00259           fNfailReco,
00260           fNpassReco+fNfailReco,
00261           fResourceReco.utime,
00262           fResourceReco.stime,
00263           "",
00264           anaStr,
00265           fNpassAna,
00266           fNfailAna,
00267           fNpassAna+fNfailAna,
00268           fResourceAna.utime,
00269           fResourceAna.stime);
00270   std::cout << buff << std::endl;
00271 }

double Node::RecoTime  )  const
 

Definition at line 109 of file Node.cxx.

References fResourceReco, jobc::Resource::stime, and jobc::Resource::utime.

Referenced by jobc::Sequence::Print().

00109                             {
00110   return fResourceReco.stime+fResourceReco.utime;
00111 }

void Node::ResourceReport bool  printheader = false  )  const [virtual]
 

Reimplemented in jobc::Sequence.

Definition at line 275 of file Node.cxx.

References fName, fResourceAna, fResourceReco, jobc::Resource::idrss, jobc::Resource::inblock, jobc::Resource::isrss, jobc::Resource::ixrss, jobc::Resource::majflt, jobc::Resource::maxrss, jobc::Resource::minflt, jobc::Resource::msgrcv, jobc::Resource::msgsnd, jobc::Resource::nivcsw, jobc::Resource::nsignals, jobc::Resource::nswap, jobc::Resource::nvcsw, jobc::Resource::oublock, jobc::Resource::stime, and jobc::Resource::utime.

Referenced by jobc::Sequence::ResourceReport().

00276 {
00277   const char* label[] = {
00278     "Module/Method", "utime",  "stime",    "maxrss",
00279     "ixrss",         "idrss",  "isrss",    "minflt",
00280     "majflt",        "nswap",  "inblock",  "oublock",
00281     "msgsnd",        "msgrcv", "nsignals", "nvcsw",
00282     "nivcsw",        0
00283   };
00284   if (printheader) {
00285     printf("%20s "
00286            "%8s %8s %8s %8s "
00287            "%8s %8s %8s %8s "
00288            "%8s %8s %8s %8s "
00289            "%8s %8s %8s %8s\n",
00290            label[0],
00291            label[1],  label[2],  label[3],  label[4],
00292            label[5],  label[6],  label[7],  label[5],
00293            label[9],  label[10], label[11], label[6],
00294            label[13], label[14], label[15], label[16]);
00295   }
00296 
00297   std::string reco(fName); reco += ":reco";
00298   printf("%20s "
00299          "%8.2e %8.2e %8.2e %8.2e %8.2e "
00300          "%8.2e %8.2e %8.2e %8.2e %8.2e "
00301          "%8.2e %8.2e %8.2e %8.2e %8.2e %8.2e\n",
00302          reco.c_str(),
00303          fResourceReco.utime,
00304          fResourceReco.stime,
00305          fResourceReco.maxrss,
00306          fResourceReco.ixrss,
00307          fResourceReco.idrss,
00308          fResourceReco.isrss,
00309          fResourceReco.minflt,
00310          fResourceReco.majflt,
00311          fResourceReco.nswap,
00312          fResourceReco.inblock,
00313          fResourceReco.oublock,
00314          fResourceReco.msgsnd,
00315          fResourceReco.msgrcv,
00316          fResourceReco.nsignals,
00317          fResourceReco.nvcsw,
00318          fResourceReco.nivcsw
00319          );
00320   std::string ana(fName); ana += ":ana";
00321   printf("%20s "
00322          "%8.2e %8.2e %8.2e %8.2e %8.2e "
00323          "%8.2e %8.2e %8.2e %8.2e %8.2e "
00324          "%8.2e %8.2e %8.2e %8.2e %8.2e %8.2e\n",
00325          ana.c_str(),
00326          fResourceAna.utime,
00327          fResourceAna.stime,
00328          fResourceAna.maxrss,
00329          fResourceAna.ixrss,
00330          fResourceAna.idrss,
00331          fResourceAna.isrss,
00332          fResourceAna.minflt,
00333          fResourceAna.majflt,
00334          fResourceAna.nswap,
00335          fResourceAna.inblock,
00336          fResourceAna.oublock,
00337          fResourceAna.msgsnd,
00338          fResourceAna.msgrcv,
00339          fResourceAna.nsignals,
00340          fResourceAna.nvcsw,
00341          fResourceAna.nivcsw
00342          );
00343 }

void jobc::Node::ReverseFilter bool  onoff = true  )  [inline]
 

Definition at line 33 of file Node.h.

References fFilterReversed.

Referenced by jobc::nodeBuilder::Build(), and testJobCNode().

00033 { fFilterReversed = onoff; }

void jobc::Node::SetFilter bool  onoff = true  )  [inline]
 

Definition at line 32 of file Node.h.

References fFilterActive.

Referenced by jobc::nodeBuilder::Build(), and testJobCNode().

00032 { fFilterActive   = onoff; }

void Node::StepInToFolder  )  const
 

Definition at line 162 of file Node.cxx.

Referenced by jobc::Sequence::EndFile(), jobc::Sequence::EndRun(), jobc::Sequence::EndSubrun(), Exec(), GetModule(), jobc::Sequence::NewFile(), jobc::Sequence::NewRun(), jobc::Sequence::NewSubrun(), operator=(), and ~Node().

00162                                 {
00163   HistoFile::StepIn(this->fFolderName.c_str());
00164 }

void Node::StepOutOfFolder  )  const
 

Definition at line 168 of file Node.cxx.

Referenced by jobc::Sequence::EndFile(), jobc::Sequence::EndRun(), jobc::Sequence::EndSubrun(), Exec(), GetModule(), jobc::Sequence::NewFile(), jobc::Sequence::NewRun(), jobc::Sequence::NewSubrun(), and operator=().

00168                                  {
00169   HistoFile::StepOut();
00170 }


Member Data Documentation

bool jobc::Node::fAnaActive [protected]
 

Run the Ana method?

Definition at line 60 of file Node.h.

Referenced by ActivateAna(), Exec(), operator=(), and Print().

bool jobc::Node::fFilterActive [protected]
 

Are the filters active?

Definition at line 57 of file Node.h.

Referenced by Exec(), operator=(), Print(), and SetFilter().

bool jobc::Node::fFilterReversed [protected]
 

Reverse the meanings of pass/fail?

Definition at line 58 of file Node.h.

Referenced by Exec(), operator=(), Print(), and ReverseFilter().

std::string jobc::Node::fFolderName [protected]
 

Name of folder used for histogram output.

Definition at line 56 of file Node.h.

Referenced by FolderName(), Node(), and operator=().

bool jobc::Node::fIsSequence [protected]
 

Definition at line 52 of file Node.h.

Referenced by IsSequence(), Node(), and operator=().

Module* jobc::Node::fModule [protected]
 

Definition at line 51 of file Node.h.

Referenced by GetModule(), operator=(), and ~Node().

std::string jobc::Node::fName [protected]
 

Name of module/node.

Definition at line 54 of file Node.h.

Referenced by GetModule(), Name(), operator=(), Print(), and ResourceReport().

unsigned int jobc::Node::fNfailAna [protected]
 

# of events which failed Ana method

Definition at line 64 of file Node.h.

Referenced by Exec(), operator=(), and Print().

unsigned int jobc::Node::fNfailReco [protected]
 

# of events which passed Reco method

Definition at line 62 of file Node.h.

Referenced by Exec(), operator=(), and Print().

unsigned int jobc::Node::fNpassAna [protected]
 

# of events which passed Ana method

Definition at line 63 of file Node.h.

Referenced by Exec(), operator=(), and Print().

unsigned int jobc::Node::fNpassReco [protected]
 

# of events which passed Reco method

Definition at line 61 of file Node.h.

Referenced by Exec(), operator=(), and Print().

bool jobc::Node::fRecoActive [protected]
 

Run the Reco method?

Definition at line 59 of file Node.h.

Referenced by ActivateReco(), Exec(), operator=(), and Print().

Resource jobc::Node::fResourceAna [protected]
 

Resources used by Ana method.

Definition at line 65 of file Node.h.

Referenced by Exec(), Print(), and ResourceReport().

Resource jobc::Node::fResourceReco [protected]
 

Resources used by Reco method.

Definition at line 66 of file Node.h.

Referenced by Exec(), Print(), RecoTime(), and ResourceReport().

std::string jobc::Node::fVersion [protected]
 

Configuration version used by module.

Definition at line 55 of file Node.h.

Referenced by GetModule(), Node(), operator=(), and Print().


The documentation for this class was generated from the following files:
Generated on Fri Jul 25 02:05:54 2008 for NOvA Offline by doxygen 1.3.5