Newer
Older
TB_Chris / TbIO / src / .svn / text-base / TbTupleWriter.h.svn-base
  1. #ifndef TB_TUPLEWRITER_H
  2. #define TB_TUPLEWRITER_H 1
  3.  
  4. // Tb/TbKernel
  5. #include "TbKernel/TbAlgorithm.h"
  6.  
  7. /** @class TbTupleWriter TbTupleWriter.h
  8. *
  9. * Algorithm to write out hits/clusters/tracks/triggers in ntuple format.
  10. *
  11. * @author Heinrich Schindler
  12. * @date 2014-06-19
  13. */
  14.  
  15. class TbTupleWriter : public TbAlgorithm {
  16. public:
  17. /// Standard constructor
  18. TbTupleWriter(const std::string& name, ISvcLocator* pSvcLocator);
  19. /// Destructor
  20. virtual ~TbTupleWriter();
  21.  
  22. virtual StatusCode initialize(); ///< Algorithm initialization
  23. virtual StatusCode execute(); ///< Algorithm execution
  24.  
  25. private:
  26. bool m_writeTriggers;
  27. bool m_writeHits;
  28. bool m_writeClusters;
  29. bool m_writeTracks;
  30. bool m_writeClusterHits;
  31. /// Flag to produce a stripped nTuple
  32. bool m_strippedNTuple;
  33. unsigned int m_maxclustersize;
  34. unsigned int m_maxTriggers;
  35. unsigned long long m_evtNo;
  36. std::string m_triggerLocation;
  37. std::string m_hitLocation;
  38. std::string m_clusterLocation;
  39. std::string m_trackLocation;
  40.  
  41. void fillTriggers();
  42. void fillHits();
  43. void fillClusters();
  44. void fillTracks();
  45.  
  46. void bookTriggers();
  47. void bookHits();
  48. void bookClusters();
  49. void bookTracks();
  50.  
  51. // Trigger nTuple entries
  52. NTuple::Item<unsigned long long> m_TgID;
  53. NTuple::Item<unsigned long long> m_TgTime;
  54. NTuple::Item<double> m_TgHTime;
  55. NTuple::Item<unsigned int> m_TgEvt;
  56. NTuple::Item<unsigned int> m_TgPlane;
  57. NTuple::Item<unsigned int> m_TgCounter;
  58.  
  59. // Hit nTuple entries
  60. NTuple::Item<unsigned long long> m_hID;
  61. NTuple::Item<unsigned long long> m_hTime;
  62. NTuple::Item<unsigned int> m_hCol;
  63. NTuple::Item<unsigned int> m_hRow;
  64. NTuple::Item<double> m_hHTime;
  65. NTuple::Item<unsigned int> m_hToT;
  66. NTuple::Item<unsigned int> m_hPlane;
  67.  
  68. // Track nTuple entries
  69. NTuple::Item<unsigned long long> m_TkID;
  70. NTuple::Item<unsigned long long> m_TkTime;
  71. NTuple::Array<unsigned long long> m_TkClId;
  72. NTuple::Array<unsigned long long> m_TkTgId;
  73. NTuple::Array<unsigned int> m_TkTgPlane;
  74. NTuple::Array<double> m_TkXResidual;
  75. NTuple::Array<double> m_TkYResidual;
  76.  
  77. NTuple::Item<double> m_TkX0;
  78. NTuple::Item<double> m_TkY0;
  79. NTuple::Item<double> m_TkTx;
  80. NTuple::Item<double> m_TkTy;
  81. NTuple::Item<double> m_TkHTime;
  82. NTuple::Item<double> m_TkChi2ndof;
  83. NTuple::Item<unsigned int> m_TkNCl;
  84. NTuple::Item<unsigned int> m_TkNTg;
  85. NTuple::Item<unsigned int> m_TkNTgPlane;
  86. NTuple::Item<unsigned int> m_TkEvt;
  87.  
  88. // Cluster nTuple entries
  89. NTuple::Item<double> m_clGx, m_clGy, m_clGz;
  90. NTuple::Item<double> m_clLx, m_clLy, m_clHTime;
  91. NTuple::Item<unsigned int> m_clSize;
  92. NTuple::Item<double> m_clCharge;
  93. NTuple::Item<unsigned int> m_clPlane, m_clN;
  94. NTuple::Item<unsigned long long> m_clEvtNo, m_clID, m_clTime;
  95. NTuple::Item<bool> m_clTracked;
  96. NTuple::Array<int> m_clhRow, m_clhCol, m_clhToT;
  97. NTuple::Array<unsigned int> m_clsCol;
  98. NTuple::Array<double> m_clhHTime;
  99. };
  100.  
  101. #endif