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

In This Package:

GtTransformTool Class Reference

#include <GtTransformTool.h>

Inheritance diagram for GtTransformTool:

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

Public Types

 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR
 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR
enum  Status

Public Member Functions

 GtTransformTool (const std::string &type, const std::string &name, const IInterface *parent)
 GtTransformTool - transform existing event vertices and momenta from local to global coordinates.
virtual ~GtTransformTool ()
virtual StatusCode initialize ()
virtual StatusCode finalize ()
virtual StatusCode mutate (HepMC::GenEvent &event)
 Modify the event.
const IDetectorElementdetelem ()
INTupleSvcntupleSvc () const
INTupleSvcevtColSvc () const
IDataProviderSvcdetSvc () const
IDataProviderSvcevtSvc () const
IIncidentSvcincSvc () const
IChronoStatSvcchronoSvc () const
IHistogramSvchistoSvc () const
IAlgContextSvccontextSvc () const
DataObjectput (IDataProviderSvc *svc, DataObject *object, const std::string &address, const bool useRootInTES=true) const
DataObjectput (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
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
virtual unsigned long release ()
const std::string & context () const
const std::string & rootInTES () const
double globalTimeOffset () const
virtual StatusCode queryInterface (const InterfaceID &riid, void **ppvUnknown)
virtual unsigned long addRef ()
virtual const std::string & name () const
virtual const std::string & type () const
virtual const IInterfaceparent () const
virtual StatusCode configure ()
virtual StatusCode start ()
virtual StatusCode stop ()
virtual StatusCode terminate ()
virtual StatusCode reinitialize ()
virtual StatusCode restart ()
virtual Gaudi::StateMachine::State FSMState () const
virtual Gaudi::StateMachine::State targetFSMState () const
virtual StatusCode sysInitialize ()
virtual StatusCode sysStart ()
virtual StatusCode sysStop ()
virtual StatusCode sysFinalize ()
virtual StatusCode sysReinitialize ()
virtual StatusCode sysRestart ()
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
PropertyMgrgetPropertyMgr ()
ISvcLocatorserviceLocator () const
ISvcLocatorsvcLoc () const
IMessageSvcmsgSvc () const
IToolSvctoolSvc () const
StatusCode setProperties ()
StatusCode service (const std::string &name, T *&svc, bool createIf=true) const
StatusCode service (const std::string &type, const std::string &name, T *&svc) const
void declInterface (const InterfaceID &, void *)
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
IAuditorSvcauditorSvc () 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
virtual const std::string & type () const =0
virtual const IInterfaceparent () const =0
virtual StatusCode configure ()=0
virtual StatusCode start ()=0
virtual StatusCode stop ()=0
virtual StatusCode terminate ()=0
virtual StatusCode reinitialize ()=0
virtual StatusCode restart ()=0
virtual Gaudi::StateMachine::State FSMState () const =0
virtual StatusCode sysInitialize ()=0
virtual StatusCode sysStart ()=0
virtual StatusCode sysStop ()=0
virtual StatusCode sysFinalize ()=0
virtual StatusCode sysReinitialize ()=0
virtual StatusCode sysRestart ()=0
virtual unsigned long refCount () const =0
virtual const std::string & name () const =0
virtual StatusCode queryInterface (const InterfaceID &riid, void **ppvInterface)=0
virtual unsigned long addRef ()=0
virtual unsigned long release ()=0

Static Public Member Functions

static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()
 Retrieve interface ID.

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
int outputLevel () const
virtual unsigned long refCount () const
IntegerPropertyoutputLevelProperty ()
void initOutputLevel (Property &prop)

Static Protected Attributes

static const bool IgnoreRootInTES
static const bool UseRootInTES

Private Attributes

std::string m_volume
 Volume property.
std::vector< double > m_offset
bool m_ignorePosition
bool m_ignoreDirection
IDetectorElementm_detelem

Detailed Description

Definition at line 33 of file GtTransformTool.h.


Constructor & Destructor Documentation

GtTransformTool::GtTransformTool ( const std::string &  type,
const std::string &  name,
const IInterface parent 
)

GtTransformTool - transform existing event vertices and momenta from local to global coordinates.

bv@bnl.gov 2008/6/6 move transformations into dedicated tool

Definition at line 20 of file GtTransformTool.cc.

00023     : GaudiTool(type,name,parent)
00024     , m_offset(3,0)
00025     , m_detelem(0)
00026 {
00027     declareInterface<IHepMCEventMutator>(this);
00028 
00029     declareProperty("Volume",m_volume="",
00030                     "Name of the DetectorElement to provide the local coordinate system.");
00031 
00032     declareProperty("Offset",m_offset,
00033                     "Spatial offset to apply to vertices before transformation");
00034 
00035     declareProperty("IgnorePosition",m_ignorePosition = false,
00036                     "Do not transform the position.");
00037 
00038     declareProperty("IgnoreDirection",m_ignoreDirection = false,
00039                     "Do not transform the direction.");
00040 }

GtTransformTool::~GtTransformTool (  )  [virtual]

Definition at line 54 of file GtTransformTool.cc.

00055 {
00056 }


Member Function Documentation

StatusCode GtTransformTool::initialize (  )  [virtual]

Reimplemented from GaudiTool.

Definition at line 58 of file GtTransformTool.cc.

00059 {
00060     this->GaudiTool::initialize();
00061 
00062     const IDetectorElement* detelem = this->detelem();
00063     if (!detelem) {
00064         fatal() << "Could not get detector element: \"" << m_volume << "\"" << endreq;
00065         return StatusCode::FAILURE;
00066     }
00067 
00068     return StatusCode::SUCCESS;
00069 }

StatusCode GtTransformTool::finalize (  )  [virtual]

Reimplemented from GaudiTool.

Definition at line 124 of file GtTransformTool.cc.

00125 {
00126 
00127     return this->GaudiTool::finalize();
00128 }

StatusCode GtTransformTool::mutate ( HepMC::GenEvent event  )  [virtual]

Modify the event.

Implements IHepMCEventMutator.

Definition at line 73 of file GtTransformTool.cc.

00074 {
00075     if (!m_ignorePosition) {
00076 
00077         debug() << "Transforming " << event.vertices_size() << " vertices:\n";
00078         HepMC::GenEvent::vertex_iterator vtx, done = event.vertices_end();
00079         for (vtx = event.vertices_begin(); vtx != done; ++vtx) {
00080             HepMC::FourVector pos = (*vtx)->position();
00081 
00082             // Note XYZPoint, not XYZVector
00083             Gaudi::XYZPoint local_point(pos.x()+m_offset[0],pos.y()+m_offset[1],pos.z()+m_offset[2]);
00084             Gaudi::XYZPoint global_point = m_detelem->geometry()->toGlobal(local_point);
00085 
00086             debug() << "\ttransform("<< pos.x()<<","<<pos.y()<<","<<pos.z() << ")\n"
00087                     << "\tlocal: " << local_point 
00088                     << "\tglobal: " << global_point << '\n'
00089                     << "\t detelem: " << *m_detelem << "\n"
00090                 //<< "\t with lvolume: " << *(m_detelem->geometry()->lvolume())  
00091                     << "\n";
00092 
00093             pos.setX(global_point.x()); 
00094             pos.setY(global_point.y()); 
00095             pos.setZ(global_point.z());
00096             (*vtx)->set_position(pos);
00097             debug() << "\tvertex @ " << "("
00098                     << (*vtx)->position().x()/CLHEP::cm << ","
00099                     << (*vtx)->position().y()/CLHEP::cm << ","
00100                     << (*vtx)->position().z()/CLHEP::cm << ","
00101                     << (*vtx)->position().t()/CLHEP::second << ") [cm,cm,cm,second]";
00102         }
00103         debug () << endreq;
00104     }
00105 
00106     if (!m_ignoreDirection) {
00107 
00108         HepMC::GenEvent::particle_iterator pit, pdone = event.particles_end();
00109         for (pit = event.particles_begin(); pit != pdone; ++pit) {
00110             HepMC::FourVector mom = (*pit)->momentum();
00111 
00112             // Note XYZVector, not XYZPoint
00113             Gaudi::XYZVector lmom(mom.px(),mom.py(),mom.pz());
00114             Gaudi::XYZVector gmom = m_detelem->geometry()->toGlobal(lmom);
00115             mom.set(gmom.x(),gmom.y(),gmom.z(),mom.e());
00116 
00117             (*pit)->set_momentum(mom);
00118         }
00119     }
00120 
00121     return StatusCode::SUCCESS;
00122 }

const IDetectorElement * GtTransformTool::detelem (  ) 

Definition at line 42 of file GtTransformTool.cc.

00043 {
00044     if (m_detelem) return m_detelem;
00045 
00046     if ("" == m_volume) return 0;
00047 
00048     if (!existDet<IDetectorElement>(m_volume)) return 0;
00049 
00050     m_detelem = getDet<IDetectorElement>(m_volume);
00051     return m_detelem;
00052 }

const InterfaceID & IHepMCEventMutator::interfaceID (  )  [static, inherited]

Retrieve interface ID.

Reimplemented from IAlgTool.

Definition at line 8 of file IHepMCEventMutator.cc.

00009 { 
00010     return IID_IHepMCEventMutator; 
00011 }


Member Data Documentation

std::string GtTransformTool::m_volume [private]

Volume property.

Definition at line 54 of file GtTransformTool.h.

std::vector<double> GtTransformTool::m_offset [private]

Definition at line 57 of file GtTransformTool.h.

bool GtTransformTool::m_ignorePosition [private]

Definition at line 60 of file GtTransformTool.h.

bool GtTransformTool::m_ignoreDirection [private]

Definition at line 63 of file GtTransformTool.h.

IDetectorElement* GtTransformTool::m_detelem [private]

Definition at line 65 of file GtTransformTool.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:55:38 2011 for GenTools by doxygen 1.4.7