Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DBeamPhoton_factory.h
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: DBeamPhoton_factory.h
4 // Created: Mon Aug 5 14:29:24 EST 2014
5 // Creator: pmatt (on Linux ifarml6 2.6.18-128.el5 x86_64)
6 //
7 
8 #ifndef _DBeamPhoton_factory_
9 #define _DBeamPhoton_factory_
10 
11 #include <JANA/JFactory.h>
12 #include <PID/DBeamPhoton.h>
13 #include <TAGGER/DTAGMHit.h>
14 #include <TAGGER/DTAGHHit.h>
15 #include <DANA/DApplication.h>
16 #include "DResourcePool.h"
17 
18 class DBeamPhoton_factory:public jana::JFactory<DBeamPhoton>
19 {
20  public:
22  {
24  dResourcePool_BeamPhotons->Set_ControlParams(100, 20, 200, 500, 0);
25 
26  dResourcePool_TMatrixFSym = std::make_shared<DResourcePool<TMatrixFSym>>();
27  dResourcePool_TMatrixFSym->Set_ControlParams(20, 20, 50);
28  }
29 
30  void Recycle_Resources(vector<const DBeamPhoton*>& locBeams){dResourcePool_BeamPhotons->Recycle(locBeams);}
31  void Recycle_Resources(vector<DBeamPhoton*>& locBeams){dResourcePool_BeamPhotons->Recycle(locBeams);}
33 
36  {
37  auto locBeam = dResourcePool_BeamPhotons->Get_Resource();
38  locBeam->Reset();
39  return locBeam;
40  }
41 
42  jerror_t init(void); ///< Called once at program start.
43  jerror_t brun(jana::JEventLoop *locEventLoop, int32_t runnumber); ///< Called everytime a new run number is detected.
44 
45  private:
46  jerror_t evnt(jana::JEventLoop *locEventLoop, uint64_t locEventNumber); ///< Called every event.
47  jerror_t fini(void)
48  {
49  for(auto locBeam : _data)
50  Recycle_Resource(locBeam);
51  _data.clear();
53  return NOERROR;
54  }
55 
57 
58  //RESOURCE POOL
59  vector<DBeamPhoton*> dCreated;
61  shared_ptr<DResourcePool<TMatrixFSym>> dResourcePool_TMatrixFSym;
62 
63  // config. parameters
66 
67  void Set_BeamPhoton(DBeamPhoton* gamma, const DTAGHHit* hit, uint64_t locEventNumber);
68  void Set_BeamPhoton(DBeamPhoton* gamma, const DTAGMHit* hit, uint64_t locEventNumber);
69 };
70 
71 #endif // _DBeamPhoton_factory_
72 
void Recycle_Resources(vector< DBeamPhoton * > &locBeams)
void Recycle_Resources(vector< const DBeamPhoton * > &locBeams)
jerror_t brun(jana::JEventLoop *locEventLoop, int32_t runnumber)
Called everytime a new run number is detected.
shared_ptr< DResourcePool< TMatrixFSym > > dResourcePool_TMatrixFSym
void Recycle_Resource(const DBeamPhoton *locBeam)
DType * Get_Resource(void)
size_t Get_NumObjectsAllThreads(void) const
DResourcePool< DBeamPhoton > * dResourcePool_BeamPhotons
void Set_BeamPhoton(DBeamPhoton *gamma, const DTAGHHit *hit, uint64_t locEventNumber)
virtual void Reset(void)
size_t Get_NumObjectsAllThreads(void) const
void Set_ControlParams(size_t locGetBatchSize, size_t locNumToAllocateAtOnce, size_t locMaxLocalPoolSize)
vector< DBeamPhoton * > dCreated
jerror_t init(void)
Called once at program start.
jerror_t evnt(jana::JEventLoop *locEventLoop, uint64_t locEventNumber)
Called every event.
DBeamPhoton * Get_Resource(void)
void Recycle(const DType *locResource)