#ifndef OAEVENT_IRECONHIT_HXX #define OAEVENT_IRECONHIT_HXX #include "IHit.hxx" namespace COMET { class IReconHit; class IWritableReconHit; OA_EXCEPTION(EReconHitIllegal,EoaCore); } /// A calibrated hit detector element where the hit information has /// been reconstructed from the raw hits. A IReconHit object represents a hit /// that has been generated from one or more hits associated with a geometry /// object. A common usage is to represent a hit that has been constructed /// from two hits on a bar that is read out at both ends. The IHit objects /// combined in a IReconHit must all come from the same geometry object /// (i.e. the same bar or TPC MM). If you need to combine hits from different /// geometry objects, use a IReconCluster. /// /// The IReconHit class can't be directly instantiated. It is created /// using the IWritableReconHit class and is accessed as a IHit class. class COMET::IReconHit : public IHit { public: IReconHit(); IReconHit(const IWritableReconHit& val); virtual ~IReconHit(); protected: ClassDef(IReconHit,7); }; /// Provide a writable interface to a IReconHit that can be used to fill the /// object. All of the IHit objects added to a single IReconHit object must /// be in the same geometry object (e.g. all in the save bar). The geometry /// information (i.e. the geometry id, spread, &c) is taken from the first /// hit. The other hits are not used by this class, but are checked to make /// sure that they are in the same geometry volume. If you need to combine /// hits from different geometry volumes, use a IReconCluster. class COMET::IWritableReconHit : public IReconHit { public: IWritableReconHit(const IWritableReconHit& h); /// A "convenience" constructor for the case where there is one /// constituent. This sets the constituent fields, but the position, /// time, &c are not initialized. These fields and their uncertainties /// must be set using SetCharge, SetTime, &c. explicit IWritableReconHit(COMET::IHandle hit); /// A "convenience" constructor for the case where there are two /// constituents. This sets the constituent fields, but the position, /// time, &c are not initialized. These fields and their uncertainties /// must be set using SetCharge, SetTime, &c. explicit IWritableReconHit(COMET::IHandle hit1, COMET::IHandle hit2); virtual ~IWritableReconHit(); void SetGeomID(COMET::IGeometryId id); ClassDef(IWritableReconHit,5); }; #endif