| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

Ana15 Class Reference

Ana15 -- an example to show how to use Fifteen package. More...

#include <Ana15.h>

Inheritance diagram for Ana15:

[legend]
Collaboration diagram for Ana15:
[legend]
List of all members.

Public Member Functions

 Ana15 (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~Ana15 ()
virtual StatusCode initialize ()
virtual StatusCode execute ()
virtual StatusCode finalize ()
virtual StatusCode sysExecute ()
void put (IDataProviderSvc *svc, DataObject *object, const std::string &address, const bool useRootInTES=true) const
void put (DataObject *object, const std::string &address, const bool useRootInTES=true) const
Gaudi::Utils::GetData< TYPE
>::return_type 
get (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
Gaudi::Utils::GetData< TYPE
>::return_type 
get (const std::string &location, const bool useRootInTES=true) const
TYPE * getDet (IDataProviderSvc *svc, const std::string &location) const
TYPE * getDet (const std::string &location) const
bool exist (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
bool exist (const std::string &location, const bool useRootInTES=true) const
bool existDet (IDataProviderSvc *svc, const std::string &location) const
bool existDet (const std::string &location) const
TYPE * getOrCreate (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
TYPE * getOrCreate (const std::string &location, const bool useRootInTES=true) const
bool registerContext () const
INTupleSvcevtColSvc () const
IAlgContextSvccontextSvc () const
TOOL * tool (const std::string &type, const std::string &name, const IInterface *parent=0, bool create=true) const
TOOL * tool (const std::string &type, const IInterface *parent=0, bool create=true) const
SERVICE * svc (const std::string &name, const bool create=true) const
IUpdateManagerSvcupdMgrSvc () const
IDataProviderSvcfastContainersSvc () const
StatusCode Error (const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
StatusCode Warning (const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
StatusCode Print (const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const MSG::Level lev=MSG::INFO) const
StatusCode Assert (const bool ok, const std::string &message="", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Assert (const bool ok, const char *message, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Exception (const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Exception (const std::string &msg, const std::exception &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Exception (const std::string &msg="no message", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
MsgStreammsgStream (const MSG::Level level) const
MsgStreamalways () const
MsgStreamfatal () const
MsgStreamerr () const
MsgStreamerror () const
MsgStreamwarning () const
MsgStreaminfo () const
MsgStreamdebug () const
MsgStreamverbose () const
MsgStreammsg () const
const Statisticscounters () const
StatEntitycounter (const std::string &tag) const
MSG::Level msgLevel () const
bool msgLevel (const MSG::Level level) const
void resetMsgStream () const
bool typePrint () const
bool propsPrint () const
bool statPrint () const
bool errorsPrint () const
long printStat (const MSG::Level level=MSG::ALWAYS) const
long printErrors (const MSG::Level level=MSG::ALWAYS) const
long printProps (const MSG::Level level=MSG::ALWAYS) const
void registerCondition (const std::string &condition, StatusCode(CallerClass::*mf)()=NULL)
void registerCondition (const std::string &condition, CondType *&condPtrDest, StatusCode(CallerClass::*mf)()=NULL)
void registerCondition (char *condition, StatusCode(CallerClass::*mf)()=NULL)
void registerCondition (TargetClass *condition, StatusCode(CallerClass::*mf)()=NULL)
StatusCode runUpdate ()
TransientFastContainer< T > * getFastContainer (const std::string &location, typename TransientFastContainer< T >::size_type initial=0)
StatusCode release (const IInterface *interface) const
unsigned long release ()
const std::string & context () const
const std::string & rootInTES () const
double globalTimeOffset () const
virtual StatusCode sysStart ()
virtual StatusCode sysInitialize ()
virtual StatusCode sysReinitialize ()
virtual StatusCode sysRestart ()
virtual StatusCode sysStop ()
virtual StatusCode sysFinalize ()
virtual StatusCode sysBeginRun ()
virtual StatusCode sysEndRun ()
virtual const std::string & name () const
virtual const std::string & version () const
virtual StatusCode configure ()
virtual StatusCode terminate ()
virtual StatusCode start ()
virtual StatusCode stop ()
virtual StatusCode reinitialize ()
virtual StatusCode restart ()
virtual bool isExecuted () const
virtual void setExecuted (bool state)
virtual void resetExecuted ()
virtual StatusCode beginRun ()
virtual StatusCode endRun ()
virtual Gaudi::StateMachine::State FSMState () const
virtual Gaudi::StateMachine::State targetFSMState () const
virtual bool isEnabled () const
virtual bool filterPassed () const
virtual void setFilterPassed (bool state)
StatusCode service (const std::string &name, T *&psvc, bool createIf=true) const
StatusCode service (const std::string &svcType, const std::string &svcName, T *&psvc) const
void setOutputLevel (int level)
IAuditorSvcauditorSvc () const
IChronoStatSvcchronoSvc () const
IChronoStatSvcchronoStatService () const
IDataProviderSvcdetSvc () const
IDataProviderSvcdetDataService () const
IConversionSvcdetCnvSvc () const
IConversionSvcdetDataCnvService () const
IDataProviderSvceventSvc () const
IDataProviderSvcevtSvc () const
IDataProviderSvceventDataService () const
IConversionSvceventCnvSvc () const
IConversionSvceventDataCnvService () const
IHistogramSvchistoSvc () const
IHistogramSvchistogramDataService () const
IMessageSvcmsgSvc () const
IMessageSvcmessageService () const
INTupleSvcntupleSvc () const
INTupleSvcntupleService () const
IRndmGenSvcrandSvc () const
IToolSvctoolSvc () const
IExceptionSvcexceptionSvc () const
ISvcLocatorserviceLocator () const
ISvcLocatorsvcLoc () const
StatusCode createSubAlgorithm (const std::string &type, const std::string &name, Algorithm *&pSubAlg)
std::vector< Algorithm * > * subAlgorithms () const
virtual StatusCode setProperty (const Property &p)
virtual StatusCode setProperty (const std::string &s)
virtual StatusCode setProperty (const std::string &n, const std::string &v)
StatusCode setProperty (const std::string &name, const TYPE &value)
virtual StatusCode getProperty (Property *p) const
virtual const PropertygetProperty (const std::string &name) const
virtual StatusCode getProperty (const std::string &n, std::string &v) const
virtual const std::vector<
Property * > & 
getProperties () const
StatusCode setProperties ()
PropertydeclareProperty (const std::string &name, T &property, const std::string &doc="none") const
PropertydeclareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") const
IMonitorSvcmonitorSvc () const
void declareInfo (const std::string &name, const T &var, const std::string &desc) const
void declareInfo (const std::string &name, const std::string &format, const void *var, int size, const std::string &desc) const
unsigned long addRef ()
StatusCode queryInterface (const InterfaceID &riid, void **)

Static Public Member Functions

static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()

Public Attributes

 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR

Protected Types

typedef std::map< std::string,
StatEntity
Statistics
typedef std::map< std::string,
unsigned int > 
Counter
typedef std::vector< IAlgTool * > AlgTools
typedef std::pair< IInterface *,
std::string > 
ServiceEntry
typedef std::vector< ServiceEntryServices

Protected Member Functions

StatusCode releaseTool (const IAlgTool *tool) const
StatusCode releaseSvc (const IInterface *svc) const
bool isInitialized () const
bool isFinalized () const
int outputLevel () const
IntegerPropertyoutputLevelProperty ()
void initOutputLevel (Property &prop)

Static Protected Attributes

static const bool IgnoreRootInTES
static const bool UseRootInTES

Private Attributes

std::string m_TopStage
std::string m_path
ValidationTreem_valiTree
 create a root tree

Detailed Description

Ana15 -- an example to show how to use Fifteen package.

Mar. 30, 2009 created by Zhe Wang

Definition at line 19 of file Ana15.h.


Constructor & Destructor Documentation

Ana15::Ana15 ( const std::string &  name,
ISvcLocator pSvcLocator 
)

Definition at line 61 of file Ana15.cc.

00061                                                            :
00062   GaudiAlgorithm(name, pSvcLocator)
00063 {
00065   declareProperty("TopStage",m_TopStage="SingleLoader","Name of top stage");  
00067 }

Ana15::~Ana15 (  )  [virtual]

Definition at line 69 of file Ana15.cc.

00070 {
00071 }


Member Function Documentation

StatusCode Ana15::initialize (  )  [virtual]

Reimplemented from GaudiAlgorithm.

Definition at line 73 of file Ana15.cc.

00074 {
00075   this->GaudiAlgorithm::initialize();
00076 
00077   // init path
00078   if(m_TopStage=="SingleLoader") m_path = ReadoutHeader::defaultLocation();
00079   if(m_TopStage=="TrigRead")     m_path = SimReadoutHeader::defaultLocation();
00080   if(m_TopStage=="Electronic")   m_path = ElecHeader::defaultLocation();
00081   if(m_TopStage=="Detector")     m_path = SimHeader::defaultLocation();
00082   if(m_TopStage=="Kinematic")    m_path = GenHeader::defaultLocation();
00083   
00084   // init root tree
00085   m_valiTree=new ValidationTree;
00086   m_valiTree->create();
00087 
00088   StatusCode status;
00089 
00090   return StatusCode::SUCCESS;
00091 }

StatusCode Ana15::execute (  )  [virtual]

Reimplemented from GaudiAlgorithm.

Definition at line 93 of file Ana15.cc.

00094 {
00095   double m_e=5.109989e-1;  // MeV
00096   double m_alpha=3727.379; // MeV
00097 
00099   m_valiTree->reset();
00100 
00102   StatusCode   sc;
00103   DataObject   *pObject;
00104   sc=eventSvc()->retrieveObject(m_path,pObject);     // get a new data
00105   if(sc.isFailure()) {
00106     error()<<"Failed to read data"<<endreq;
00107     return sc;
00108   }
00109 
00110   const HeaderObject     *pHeader=0;
00111   pHeader=dynamic_cast<HeaderObject*>(pObject);
00112 
00113   info()<<"to grep: new data arrived at time: "<<pHeader->earliest()<<endreq;
00114 
00115   const GenHeader        *pGenHeader=0;
00116   const SimHeader        *pSimHeader=0;
00117   const ElecHeader       *pElecHeader=0;
00118   const SimTrigHeader    *pSimTrigHeader=0;
00119   const SimReadoutHeader *pSimReadoutHeader=0;
00120   const ReadoutHeader    *pReadoutHeader=0;
00121 
00122   const IHeader* firstHeader=0;
00123 
00124   // get the header object pointer of the top stage
00125   if(m_TopStage=="SingleLoader") {
00126     // ReadoutHeader
00127     pReadoutHeader=dynamic_cast<ReadoutHeader*>(pObject);
00128   } else if(m_TopStage=="TrigRead") { 
00129     // SimReadoutHeader
00130     pSimReadoutHeader=dynamic_cast<SimReadoutHeader*>(pObject);
00131   } else if(m_TopStage=="Electronic") {
00132     // ElecHeader
00133     pElecHeader=dynamic_cast<ElecHeader*>(pObject);
00134   } else if (m_TopStage=="Detector") {
00135     // SimHeader
00136     pSimHeader=dynamic_cast<SimHeader*>(pObject);
00137   } else if (m_TopStage=="Kinematic") {
00138     // GenHeader
00139     pGenHeader=dynamic_cast<GenHeader*>(pObject);
00140   }
00141 
00142   // get the header object pointer of it lower stages
00143   // only the first one, for low event rate, it is enough
00144   if(pReadoutHeader!=0) {
00145     // SimReadoutHeader
00146     if(pReadoutHeader->inputHeaders().size() != 0) {
00147       firstHeader=*((pReadoutHeader->inputHeaders()).begin());
00148       pSimReadoutHeader= dynamic_cast<const SimReadoutHeader*>(firstHeader);
00149     }
00150   }
00151   if(pSimReadoutHeader!=0) {
00152     debug() << "Number of input SimTrigHeaders:" << pSimReadoutHeader->inputHeaders().size() << endreq;
00153     // SimTrigHeader
00154     if(pSimReadoutHeader->inputHeaders().size() != 0) {
00155       firstHeader=*((pSimReadoutHeader->inputHeaders()).begin());
00156       pSimTrigHeader= dynamic_cast<const SimTrigHeader*>(firstHeader);
00157     }
00158   }
00159   if(pSimTrigHeader!=0) {
00160     // ElecHeader
00161     if(pSimTrigHeader->inputHeaders().size() != 0) {
00162       firstHeader=*((pSimTrigHeader->inputHeaders()).begin());
00163       pElecHeader= dynamic_cast<const ElecHeader*>(firstHeader);
00164     }
00165   }
00166   if(pElecHeader!=0) {
00167     // SimHeader
00168     if(pElecHeader->inputHeaders().size() != 0) {
00169       firstHeader=*((pElecHeader->inputHeaders()).begin());
00170       pSimHeader= dynamic_cast<const SimHeader*>(firstHeader);
00171     }
00172   }
00173   if(pSimHeader!=0) {
00174     // GenHeader
00175     if(pSimHeader->inputHeaders().size() != 0) {
00176       firstHeader=*((pSimHeader->inputHeaders()).begin());
00177       pGenHeader= dynamic_cast<const GenHeader*>(firstHeader);
00178     }
00179   }
00180 
00181 
00182   // event information
00183   m_valiTree->time=pHeader->earliest().GetSeconds();
00184 
00185   // check ReadoutHeader information
00186   if(pReadoutHeader!=0) {
00187     m_valiTree->execSing=pReadoutHeader->execNumber();
00188     
00189     // adc tdc
00190     const Readout* pReadout = pReadoutHeader->readout();
00191     Detector det = pReadout->detector();
00192     
00193     if(det.detectorId() == DetectorId::kAD1 ||  // AD information
00194        det.detectorId() == DetectorId::kAD2 ||
00195        det.detectorId() == DetectorId::kAD3 ||
00196        det.detectorId() == DetectorId::kAD4) {
00197       
00198       // convert it to PMT Crate Readout
00199       const ReadoutPmtCrate* pmtcrate = 0;
00200       pmtcrate = dynamic_cast<const ReadoutPmtCrate*>(pReadout);
00201       
00202       // channnel map
00203       const ReadoutPmtCrate::PmtChannelReadouts& channelMap
00204           = pmtcrate->channelReadout();
00205       
00206       ReadoutPmtCrate::PmtChannelReadouts::const_iterator cmci;
00207 
00208       for(cmci=channelMap.begin();cmci!=channelMap.end();++cmci) {
00209         const FeeChannelId&      channelId = cmci->first;
00210         const ReadoutPmtChannel& aChannel  = cmci->second;
00211 
00212         const vector<int>&          tdc=aChannel.tdc();
00213         const vector<int>&          adc=aChannel.adc();
00214 
00215         int raw_tdc=tdc[0];
00216         int raw_adc=adc[0];
00217         
00218         m_valiTree->adc_sum+=raw_adc;
00219 
00220         verbose()<<channelId<<" tdc "<<raw_tdc<<" adc "<<raw_adc<<endreq;
00221       }
00222     }  // end of AD crate
00223   } // end of pReadoutHeader
00224 
00225   // check SimReadoutHeader information
00226   if(pSimReadoutHeader!=0) {
00227     m_valiTree->execTrig=pSimReadoutHeader->execNumber();
00228 
00229     const SimReadoutHeader::SimReadoutContainer 
00230       simReadout=pSimReadoutHeader->readouts();
00231     debug()<<"No. of SimReadout: "<<simReadout.size()<<endreq;
00232     debug()<<pSimReadoutHeader->execNumber()<<endreq;
00233   } // end of pSimReadoutHeader
00234 
00235   // check electrontic simulation information if available
00236   if(pElecHeader!=0) {
00237     m_valiTree->execElec=pElecHeader->execNumber();
00238   } // end of pElecHeader
00239 
00240   // check trigger header information if available
00241   if(pSimTrigHeader!=0) {
00242     debug()<<pSimTrigHeader->commandHeader()->collections().size();
00243   }
00244 
00245   // check detector simulation information if available
00246   if(pSimHeader!=0) {
00247     m_valiTree->execDets=pSimHeader->execNumber();
00250     const SimHitHeader* simhitheader = pSimHeader->hits();
00252     const SimHitHeader::hc_map& hcmap = simhitheader->hitCollection();
00253     SimHitHeader::hc_map::const_iterator it;
00254 
00256     m_valiTree->SimHitsEntries=0;
00257     int index(0);
00258 
00259     debug()<<"size of hit collection "<< hcmap.size()<<endreq;
00260     for (it=hcmap.begin(); it != hcmap.end(); ++it) {
00261 
00262       Detector det(it->first);
00263       debug() << "Got hit collection from " << det.detName()<<" id= "
00264               << det.siteDetPackedData()<<endreq;
00265 
00267       const std::vector<SimHit*>& hitvec=it->second->collection();
00268       std::vector<SimHit*>::const_iterator it_hvec;
00269       
00270       debug() <<"size of hit vector "<< hitvec.size()<<endreq;
00271       for (it_hvec=hitvec.begin(); it_hvec!=hitvec.end(); ++it_hvec) {
00272         
00273         index=m_valiTree->SimHitsEntries;
00274         if(index<MaxSimHitEntries){
00275 
00276           m_valiTree->hitTime[index]  = (*it_hvec)->hitTime();
00277           m_valiTree->hitx[index]     = (*it_hvec)->localPos().x();
00278           m_valiTree->hity[index]     = (*it_hvec)->localPos().y();
00279           m_valiTree->hitz[index]     = (*it_hvec)->localPos().z();
00280           m_valiTree->sensID[index]   = (*it_hvec)->sensDetId();
00281           m_valiTree->weight[index]   = (*it_hvec)->weight();
00282           
00283           // optical photon's ancestor's pdg
00284           if((*it_hvec)->ancestor().track()) {
00285             m_valiTree->ancestorPdg[index] = (*it_hvec)->ancestor().track()->particle();
00286           }
00287           else {
00288             m_valiTree->ancestorPdg[index] = 0;
00289           }
00290           //optical photon's wavelength
00291           const SimPmtHit* pmthit = static_cast<const SimPmtHit*>(*it_hvec);
00292           m_valiTree->wavelength[index]   = (*pmthit).wavelength();
00293           m_valiTree->polx[index]   = (*pmthit).pol().x();
00294           m_valiTree->poly[index]   = (*pmthit).pol().y();
00295           m_valiTree->polz[index]   = (*pmthit).pol().z();
00296           m_valiTree->px[index]   = (*pmthit).dir().x();
00297           m_valiTree->py[index]   = (*pmthit).dir().y();
00298           m_valiTree->pz[index]   = (*pmthit).dir().z();
00299           
00300           m_valiTree->SimHitsEntries = index+1;
00301           
00302         }
00303         else {
00304           debug()<< " Reached the max hit limit!!!!!" <<endl;
00305         }
00306       }
00307     }
00308   } // end of pSimHeader
00309 
00311   //  if(0==1) {
00312   if(pGenHeader!=0) {
00313     m_valiTree->execKine=pGenHeader->execNumber();
00314     debug()<<"Generator name: "<<pGenHeader->generatorName()<<endreq;
00315     debug()<<"execNum: "<<pGenHeader->execNumber()<<endreq;
00316 
00317     const HepMC::GenEvent* event=pGenHeader->event();
00318     //  event->print();
00319 
00320     HepMC::GenEvent::particle_const_iterator p;
00321     int count=0;
00322     for ( p = event->particles_begin(); p!=event->particles_end(); ++p ) {      
00323       (*p)->print();
00324       if((*p)->production_vertex()) {   // only outgoing particle has a production vertex
00325         count++;
00326 
00327         if(count==1) {
00328           
00329           m_valiTree->trk1_pdgId=(*p)->pdg_id();
00330           
00331           m_valiTree->trk1_px=(*p)->momentum().px();
00332           m_valiTree->trk1_py=(*p)->momentum().py();
00333           m_valiTree->trk1_pz=(*p)->momentum().pz();
00334           m_valiTree->trk1_e =(*p)->momentum().e();
00335           
00336           m_valiTree->trk1_x=(*p)->production_vertex()->position().x();
00337           m_valiTree->trk1_y=(*p)->production_vertex()->position().y();
00338           m_valiTree->trk1_z=(*p)->production_vertex()->position().z();
00339           m_valiTree->trk1_t=(*p)->production_vertex()->position().t();
00340 
00341           debug()<<"trk1_pdgId: "<<m_valiTree->trk1_pdgId<<endreq;
00342           
00343           if(m_valiTree->trk1_pdgId==22) { // gamma
00344             m_valiTree->trk1_ke=m_valiTree->trk1_e;
00345             m_valiTree->trk1_ve=m_valiTree->trk1_e;
00346           }else if (m_valiTree->trk1_pdgId==11) { // e-
00347             m_valiTree->trk1_ke=m_valiTree->trk1_e-m_e;
00348             m_valiTree->trk1_ve=m_valiTree->trk1_e-m_e;
00349           }else if (m_valiTree->trk1_pdgId==-11) { // e+
00350             m_valiTree->trk1_ke=m_valiTree->trk1_e-m_e;
00351             m_valiTree->trk1_ve=m_valiTree->trk1_e+m_e;
00352           }else if (m_valiTree->trk1_pdgId==1000020040) { // alpha
00353             m_valiTree->trk1_ke=m_valiTree->trk1_e-m_alpha;
00354             m_valiTree->trk1_ve=m_valiTree->trk1_e-m_alpha;
00355           }
00356         }  // outgoing particle 1
00357         if(count==2) {
00358           m_valiTree->trk2_pdgId=(*p)->pdg_id();
00359           
00360           m_valiTree->trk2_px=(*p)->momentum().px();
00361           m_valiTree->trk2_py=(*p)->momentum().py();
00362           m_valiTree->trk2_pz=(*p)->momentum().pz();
00363           m_valiTree->trk2_e =(*p)->momentum().e();
00364           
00365           m_valiTree->trk2_x=(*p)->production_vertex()->position().x();
00366           m_valiTree->trk2_y=(*p)->production_vertex()->position().y();
00367           m_valiTree->trk2_z=(*p)->production_vertex()->position().z();
00368           m_valiTree->trk2_t=(*p)->production_vertex()->position().t();
00369           if(m_valiTree->trk2_pdgId==22) { // gamma
00370             m_valiTree->trk2_ke=m_valiTree->trk2_e;
00371             m_valiTree->trk2_ve=m_valiTree->trk2_e;
00372           }else if (m_valiTree->trk2_pdgId==11) { // e-
00373             m_valiTree->trk2_ke=m_valiTree->trk2_e-m_e;
00374             m_valiTree->trk2_ve=m_valiTree->trk2_e-m_e;
00375           }else if (m_valiTree->trk2_pdgId==-11) { // e+
00376             m_valiTree->trk2_ke=m_valiTree->trk2_e-m_e;
00377             m_valiTree->trk2_ve=m_valiTree->trk2_e+m_e;
00378           }else if (m_valiTree->trk2_pdgId==1000020040) { // alpha
00379             m_valiTree->trk2_ke=m_valiTree->trk2_e-m_alpha;
00380             m_valiTree->trk2_ve=m_valiTree->trk2_e-m_alpha;
00381           }
00382         }  // outgoing particle 2
00383       } // end of outgoing particles
00384     }
00385   } // end of pGenHeader
00386 
00388   m_valiTree->fill();
00389   return StatusCode::SUCCESS;
00390 }

StatusCode Ana15::finalize (  )  [virtual]

Reimplemented from GaudiAlgorithm.

Definition at line 392 of file Ana15.cc.

00393 {
00394   m_valiTree->close();
00395   delete m_valiTree;
00396 
00397   return this->GaudiAlgorithm::finalize();
00398 }


Member Data Documentation

std::string Ana15::m_TopStage [private]

Definition at line 32 of file Ana15.h.

std::string Ana15::m_path [private]

Definition at line 33 of file Ana15.h.

ValidationTree* Ana15::m_valiTree [private]

create a root tree

Definition at line 36 of file Ana15.h.


The documentation for this class was generated from the following files:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:36:45 2011 for Sim15 by doxygen 1.4.7