#ifndef TB_TESTMC_H #define TB_TESTMC_H 1 #include "TH1.h" #include "TH2.h" #include "GaudiAlg/GaudiTupleAlg.h" #include "GaudiKernel/RndmGenerators.h" #include "TbKernel/ITbTrackFit.h" #include "TbKernel/ITbGeometrySvc.h" #include "TbKernel/TbModule.h" #include "Event/TbHit.h" #include "Event/TbCluster.h" #include "Event/TbTrack.h" /** @class TbTestMC TbTestMC.h * Author: Dan Saunders */ class TbTestMC : public GaudiTupleAlg { public: TbTestMC(const std::string& name, ISvcLocator* pSvcLocator); virtual ~TbTestMC() {} virtual StatusCode initialize(); ///< Algorithm initialization virtual StatusCode execute(); ///< Algorithm execution virtual StatusCode finalize(); ///< Algorithm finalization int m_nEvents; void generate_tracks(); void createClustFromTrack(); void add_to_TES(); void ExportHits(); void sort_stuff(); void sort_by_chip(); void track_torder(); void cluster_torder(); void hit_torder(const unsigned int plane); Gaudi::XYZPoint ClustGposn(int); int ClustCharge(); void make_tracks(); LHCb::TbTrack* make_track(Gaudi::XYZPoint, float, int); void make_noise(); LHCb::TbCluster* make_cluster(Gaudi::XYZPoint, float, int, int); int ClustSize(); void setClusterHitsAndCharge(LHCb::TbCluster*, int); Gaudi::XYZPoint getIntercept(const unsigned int& plane, LHCb::TbTrack*); int m_nTracks; int m_EventLength; int m_nNoiseClusters; int m_HitTimeJitter; float m_ClustPosnResolution; unsigned int m_nPlanes; float m_ChipWidth; float m_PosnSpread; float m_charge; bool m_ForceEfficiency; float m_ChargeSigma; float m_Pitch; double m_ChargeSharingWidth; float m_ThresholdCut; unsigned int m_nExportedTracks; bool m_ExportHits; bool m_ExportClusters; bool m_ExportTracks; int m_nExportedHits; std::string m_filename; bool m_misalign; std::vector<TbModule*> m_modules; std::vector<float> m_ClustSizeFracs; std::vector<std::vector<LHCb::TbHit*> > m_Hits; // Per event. std::vector<LHCb::TbCluster*> m_Clusters; // Per event. std::vector<LHCb::TbTrack*> m_Tracks; // Per event. // Geometry service. mutable ITbGeometrySvc* m_geomSvc; ITbGeometrySvc* geomSvc() const { if (!m_geomSvc) m_geomSvc = svc<ITbGeometrySvc>("TbGeometrySvc", true); return m_geomSvc; } ITbTrackFit* m_trackFit; // Random number genorators. Rndm::Numbers m_uniform; Rndm::Numbers m_gauss; Rndm::Numbers m_landau; Rndm::Numbers m_gauss2; Rndm::Numbers m_uniform2; }; #endif