// ----------------------------------------------------------------------------
// $Id: LCDFullRecon.cxx,v 1.2 2001/06/23 16:17:07 toshi Exp $
// ----------------------------------------------------------------------------
//
// $Log: LCDFullRecon.cxx,v $
// Revision 1.2 2001/06/23 16:17:07 toshi
// In method arg. , Char_t* -> const Char_t* .
//
// Revision 1.1 2001/05/10 18:29:05 toshi
// C++ file name convention has been changed from *.C to *.cxx .
//
//
#include "LCDFullRecon.h"
ClassImp(LCDFullRecon)
//______________________________________________________________________
LCDFullRecon::LCDFullRecon() {
Init();
}
//______________________________________________________________________
//______________________________________________________________________
LCDFullRecon::LCDFullRecon(LCDGetParameters* gp,
const Char_t* smearFileName,
LCDEvent* event) {
Init();
m_mygp=kFALSE;
SetLCDFullRecon(gp,smearFileName,event);
}
//______________________________________________________________________
//______________________________________________________________________
LCDFullRecon::LCDFullRecon(Char_t* geometryFileName,
const Char_t* smearFileName,
LCDEvent* event) {
Init();
FILE* parfile = fopen(geometryFileName,"r");
LCDGetParameters* gp = new LCDGetParameters(parfile);
fclose(parfile);
m_mygp=kTRUE;
SetLCDFullRecon(gp,smearFileName,event);
}
//______________________________________________________________________
//______________________________________________________________________
void
LCDFullRecon::SetLCDFullRecon(LCDGetParameters* gp,
const Char_t* smearFileName,
LCDEvent* event) {
m_event = event;
m_gp = gp;
// Create list of modules to run
// Add modules to list. They inherit from RecModule and must have
// doit, cleanup and spew functions defined.
if (m_ModuleList == 0) {
m_ModuleList=new TObjArray();
}
if (m_eventMarker == 0) {
m_eventMarker = new LCDEventMarker(0,0);
m_ModuleList->Add(m_eventMarker);
}
if (m_ipSmear == 0) {
m_ipSmear = new LCDIPSmear(gp);
m_ModuleList->Add(m_ipSmear);
}
if (m_mcPartPrint == 0) {
m_mcPartPrint = new LCDMCPartPrint();
m_ModuleList->Add(m_mcPartPrint);
}
if (m_trackRecSmear == 0) {
m_trackRecSmear = new LCDTrackRecSmear(gp,smearFileName);
m_ModuleList->Add(m_trackRecSmear);
}
if (m_ClusterSystem == 0) {
m_ClusterSystem = new LCDClusterSystem(gp);
m_ModuleList->Add(m_ClusterSystem);
}
if(m_iter == 0) {
m_iter = new TObjArrayIter(m_ModuleList);
}
}
//______________________________________________________________________
//______________________________________________________________________
LCDFullRecon::~LCDFullRecon() {
if (m_mygp && m_gp) {
delete m_gp;
m_gp=0;
}
if (m_eventMarker) {
delete m_eventMarker;
m_eventMarker=0;
}
if (m_ipSmear) {
delete m_ipSmear;
m_ipSmear=0;
}
if (m_mcPartPrint) {
delete m_mcPartPrint;
m_mcPartPrint=0;
}
if (m_trackRecSmear) {
delete m_ModuleList;
m_ModuleList=0;
}
if (m_ClusterSystem) {
delete m_ModuleList;
m_ModuleList=0;
}
if (m_iter) {
delete m_iter;
m_iter=0;
}
if (m_ModuleList) {
delete m_ModuleList;
m_ModuleList=0;
}
}
//______________________________________________________________________
//______________________________________________________________________
void
LCDFullRecon::Doit(LCDEvent *event) {
if (event) {
m_event=event;
}
if (m_event) {
Cleanup(0);
m_iter->Reset();
while( (m_module = (LCDRecModule*) (*m_iter)()) ) {
m_module->Doit(m_event);
}
} else {
fprintf(stderr,"LCDFullMC::Doit Pointer of LCDEvent is not given!n");
}
}
//______________________________________________________________________
//______________________________________________________________________
void LCDFullRecon::Cleanup(LCDEvent *event) {
// Invoke each module's cleanup method
if (event) {
m_event=event;
}
if (m_event) {
m_iter->Reset();
while( (m_module = (LCDRecModule*) (*m_iter)()) ) {
m_module->Cleanup(m_event);
}
} else {
fprintf(stderr,"LCDFullRecon::Clean Pointer of LCDEvent is not given!n");
}
}
//______________________________________________________________________
//______________________________________________________________________
void LCDFullRecon::Init() {
m_event = 0;
m_ModuleList = 0;
m_iter = 0;
m_module = 0;
m_eventMarker = 0;
m_mcPartPrint = 0;
m_trackRecSmear = 0;
m_ClusterSystem = 0;
m_gp = 0;
m_mygp = kFALSE;
}
//______________________________________________________________________
ROOT page - Class index - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.