Newer
Older
TB_Chris / TbSimulation / src / .svn / text-base / TbTestMC.h.svn-base
  1. #ifndef TB_TESTMC_H
  2. #define TB_TESTMC_H 1
  3.  
  4. #include "TH1.h"
  5. #include "TH2.h"
  6.  
  7. #include "GaudiAlg/GaudiTupleAlg.h"
  8. #include "GaudiKernel/RndmGenerators.h"
  9.  
  10. #include "TbKernel/ITbTrackFit.h"
  11. #include "TbKernel/ITbGeometrySvc.h"
  12. #include "TbKernel/TbModule.h"
  13. #include "Event/TbHit.h"
  14. #include "Event/TbCluster.h"
  15. #include "Event/TbTrack.h"
  16.  
  17. /** @class TbTestMC TbTestMC.h
  18. * Author: Dan Saunders
  19. */
  20.  
  21. class TbTestMC : public GaudiTupleAlg {
  22. public:
  23. TbTestMC(const std::string& name, ISvcLocator* pSvcLocator);
  24. virtual ~TbTestMC() {}
  25.  
  26. virtual StatusCode initialize(); ///< Algorithm initialization
  27. virtual StatusCode execute(); ///< Algorithm execution
  28. virtual StatusCode finalize(); ///< Algorithm finalization
  29. int m_nEvents;
  30. void generate_tracks();
  31. void createClustFromTrack();
  32. void add_to_TES();
  33. void ExportHits();
  34. void sort_stuff();
  35. void sort_by_chip();
  36. void track_torder();
  37. void cluster_torder();
  38. void hit_torder(const unsigned int plane);
  39. Gaudi::XYZPoint ClustGposn(int);
  40. int ClustCharge();
  41. void make_tracks();
  42. LHCb::TbTrack* make_track(Gaudi::XYZPoint, float, int);
  43. void make_noise();
  44. LHCb::TbCluster* make_cluster(Gaudi::XYZPoint, float, int, int);
  45. int ClustSize();
  46. void setClusterHitsAndCharge(LHCb::TbCluster*, int);
  47. Gaudi::XYZPoint getIntercept(const unsigned int& plane, LHCb::TbTrack*);
  48.  
  49. int m_nTracks;
  50. int m_EventLength;
  51. int m_nNoiseClusters;
  52. int m_HitTimeJitter;
  53. float m_ClustPosnResolution;
  54. unsigned int m_nPlanes;
  55. float m_ChipWidth;
  56. float m_PosnSpread;
  57. float m_charge;
  58. bool m_ForceEfficiency;
  59. float m_ChargeSigma;
  60. float m_Pitch;
  61. double m_ChargeSharingWidth;
  62. float m_ThresholdCut;
  63. unsigned int m_nExportedTracks;
  64. bool m_ExportHits;
  65. bool m_ExportClusters;
  66. bool m_ExportTracks;
  67.  
  68. int m_nExportedHits;
  69.  
  70. std::string m_filename;
  71. bool m_misalign;
  72. std::vector<TbModule*> m_modules;
  73.  
  74. std::vector<float> m_ClustSizeFracs;
  75.  
  76. std::vector<std::vector<LHCb::TbHit*> > m_Hits; // Per event.
  77. std::vector<LHCb::TbCluster*> m_Clusters; // Per event.
  78. std::vector<LHCb::TbTrack*> m_Tracks; // Per event.
  79.  
  80.  
  81. // Geometry service.
  82. mutable ITbGeometrySvc* m_geomSvc;
  83. ITbGeometrySvc* geomSvc() const {
  84. if (!m_geomSvc) m_geomSvc = svc<ITbGeometrySvc>("TbGeometrySvc", true);
  85. return m_geomSvc;
  86. }
  87. ITbTrackFit* m_trackFit;
  88.  
  89.  
  90. // Random number genorators.
  91. Rndm::Numbers m_uniform;
  92. Rndm::Numbers m_gauss;
  93. Rndm::Numbers m_landau;
  94. Rndm::Numbers m_gauss2;
  95. Rndm::Numbers m_uniform2;
  96. };
  97. #endif