00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef TESDemoData_TESDemoAntiNeutrino_H
00016 #define TESDemoData_TESDemoAntiNeutrino_H 1
00017
00018
00019 #include "Event/TemporalDataObject.h"
00020 #include "Context/TimeStamp.h"
00021 #include "DataUtilities/TemporalObjectVector.h"
00022 #include "Event/TemporalContainedObject.h"
00023 #include "Event/TESDemoPositron.h"
00024 #include "Event/TESDemoNeutron.h"
00025 #include "GaudiKernel/boost_allocator.h"
00026 #include "GaudiKernel/SmartRef.h"
00027 #include <ostream>
00028
00029
00030
00031 namespace DayaBay
00032 {
00033
00034
00035
00045 class TESDemoAntiNeutrino: public TemporalContainedObject
00046 {
00047 public:
00048
00050 typedef TemporalObjectVector<TESDemoAntiNeutrino> Container;
00051
00053 TESDemoAntiNeutrino(const DayaBay::TESDemoPositron* positron,
00054 const DayaBay::TESDemoNeutron* neutron);
00055
00057 TESDemoAntiNeutrino() {}
00058
00060 virtual ~TESDemoAntiNeutrino();
00061
00063 virtual std::ostream& fillStream(std::ostream& s) const;
00064
00066 void setPositron(const SmartRef<DayaBay::TESDemoPositron>& value);
00067
00069 void setPositron(const DayaBay::TESDemoPositron* value);
00070
00072 void setNeutron(const SmartRef<DayaBay::TESDemoNeutron>& value);
00073
00075 void setNeutron(const DayaBay::TESDemoNeutron* value);
00076
00079 const DayaBay::TESDemoPositron* positron() const;
00080
00083 const DayaBay::TESDemoNeutron* neutron() const;
00084
00085
00086 #ifndef GOD_NOALLOC
00088 static void* operator new ( size_t size )
00089 {
00090 return ( sizeof(TESDemoAntiNeutrino) == size ?
00091 boost::singleton_pool<TESDemoAntiNeutrino, sizeof(TESDemoAntiNeutrino)>::malloc() :
00092 ::operator new(size) );
00093 }
00094
00098 static void* operator new ( size_t size, void* pObj )
00099 {
00100 return ::operator new (size,pObj);
00101 }
00102
00104 static void operator delete ( void* p )
00105 {
00106 boost::singleton_pool<TESDemoAntiNeutrino, sizeof(TESDemoAntiNeutrino)>::is_from(p) ?
00107 boost::singleton_pool<TESDemoAntiNeutrino, sizeof(TESDemoAntiNeutrino)>::free(p) :
00108 ::operator delete(p);
00109 }
00110
00113 static void operator delete ( void* p, void* pObj )
00114 {
00115 ::operator delete (p, pObj);
00116 }
00117 #endif
00118 protected:
00119
00120 private:
00121
00122 SmartRef<DayaBay::TESDemoPositron> m_positron;
00123 SmartRef<DayaBay::TESDemoNeutron> m_neutron;
00124
00125 };
00126
00127 inline std::ostream& operator<< (std::ostream& str, const TESDemoAntiNeutrino& obj)
00128 {
00129 return obj.fillStream(str);
00130 }
00131
00132 }
00133
00134
00135
00136
00137
00138
00139
00140 inline DayaBay::TESDemoAntiNeutrino::TESDemoAntiNeutrino(const DayaBay::TESDemoPositron* positron,
00141 const DayaBay::TESDemoNeutron* neutron)
00142 {
00143
00144 setPositron(positron);
00145 setNeutron(neutron);
00146 setEarliest(positron->timeStamp());
00147 setLatest(neutron->timeStamp());
00148
00149 }
00150
00151 inline DayaBay::TESDemoAntiNeutrino::~TESDemoAntiNeutrino()
00152 {
00153
00154
00155 setNeutron(0);
00156 setPositron(0);
00157
00158 }
00159
00160 inline std::ostream& DayaBay::TESDemoAntiNeutrino::fillStream(std::ostream& s) const
00161 {
00162 TemporalContainedObject::fillStream(s);
00163 return s;
00164 }
00165
00166
00167 inline const DayaBay::TESDemoPositron* DayaBay::TESDemoAntiNeutrino::positron() const
00168 {
00169 return m_positron;
00170 }
00171
00172 inline const DayaBay::TESDemoNeutron* DayaBay::TESDemoAntiNeutrino::neutron() const
00173 {
00174 return m_neutron;
00175 }
00176
00177
00178 #endif