/// /// For questions or suggestions about this module please contact the /// current responsible and CC in the oaAnalysis package manager. /// /// 21-Jul-2010: The module initially created by /// Tomasz Wachala (Tomasz.Wachala [*a*t*] ifj.edu.pl) /// /// current manager is /// Alexander Izmaylov (izmaylov [*a*t*] inr.ru) #ifndef _TSmrdReconModule_hxx_seen #define _TSmrdReconModule_hxx_seen #include #include "IoaAnalysisUtils.hxx" #include "IAnalysisReconModuleBase.hxx" namespace COMET { class IReconSMRDModule; } /// Summary information from ReconSMRD output. // [TW] class COMET::IReconSMRDModule : public IAnalysisReconModuleBase { public: enum ESMRDWall {kTop = 0, kBottom, kRight, kLeft}; ///Both-sided SMRD IReconHit that isn't included in any reconstructed track. ///It contains Z position calculated according to the time difference between two sides. class IReconSMRDHit : public TObject { public: virtual ~IReconSMRDHit(); TLorentzVector Position; TLorentzVector PositionUncertainty; double Charge; double dZ; double dT; double ContribCharge[2]; int Wall; int Yoke; int Layer; int Tower; int Counter; UInt_t RMM; UInt_t TFB; //flags for hit types bool IsInnerMatched; bool IsUsed; ClassDef(IReconSMRDModule::IReconSMRDHit, 1); }; ///SMRD isolated track. class ISmrdIsoTrack : public TObject { public: virtual ~ISmrdIsoTrack(); ///Unique ID used for global - subdetector matching UInt_t UniqueID; ///Name of the reconstruction algorithm. std::string AlgorithmName; TLorentzVector FrontPos; TLorentzVector FrontPosVariance; TLorentzVector BackPos; TLorentzVector BackPosVariance; TVector3 Direction; TVector3 DirectionVariance; int NHits; int NNodes; int Status;/// HitPositions; //MC Truth information. TLorentzVector TrueInitPos; IoaAnalysisUtils::ESubdetector TrueInitDet; TLorentzVector TrueFinalPos; IoaAnalysisUtils::ESubdetector TrueFinalDet; TLorentzVector TrueInitMom; int TrueId; int TruePDG; int TrueParentId; //int TrueParentPDG; double TrueHitPurity; double TrueHitEff; ClassDef(IReconSMRDModule::ISmrdIsoTrack, 1); }; public: IReconSMRDModule(const char *name = "SMRD", const char *title = "SMRD Recon Module"); virtual ~IReconSMRDModule(); virtual Bool_t ProcessFirstEvent(COMET::ICOMETEvent &event); virtual Bool_t IsEnabledByDefault() const {return kTRUE;} protected: virtual void InitializeModule(); virtual void InitializeBranches(); virtual bool FillTree(COMET::ICOMETEvent &); public: Int_t fNSmrdReconHits; ///< The number of SMRD TReconHits. TClonesArray *fSmrdReconHits; ///< The SMRD TReconHits. Int_t fNSmrdIsoTracks; ///< The number of SMRD isolated tracks. TClonesArray *fSmrdIsoTracks; ///< The SMRD isolated tracks. private: ClassDef(IReconSMRDModule, 3); }; #endif