Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4DigiManager.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// $Id$
28//
29
30#ifndef G4DigiManager_h
31#define G4DigiManager_h 1
32
33#include "globals.hh"
34class G4Event;
35#include "G4VDigitizerModule.hh"
38class G4DMmessenger;
39#include "G4DCtable.hh"
40class G4RunManager;
41class G4SDManager;
42//#include "g4rw/tpordvec.h"
43#include <vector>
44
45// class description:
46//
47// This is a singleton class which manages the digitizer modules.
48// The user cannot access to the constructor. The pointer of the
49// only existing object can be got via G4DigiManager::GetDMpointer()
50// static method. The first invokation in the program makes the
51// singleton object.
52//
53
55{
56 public: // with description
58 // Returns the pointer to the singleton object
59 public:
61
62 protected:
64
65 public:
67
68 public: // with description
70 // Registers the user's digitizer mudule. This method must be invoked when
71 // the user construct his/her digitizer module(s).
72 void Digitize(G4String mName);
73 // Invokes Digitize() method of specified digitizer module. This is a kind
74 // of service method. The user can invoke Digitize() method of a particular
75 // module without knowing the pointer of the module object. The argument
76 // "mName" is the name of the module, which is defined at the constructor
77 // of the concrete digitizer module.
79 // Returns the pointer to the digitizer module object with the given name.
80 // Null will be returned if the name is not defined.
81 const G4VHitsCollection* GetHitsCollection(G4int HCID, G4int eventID = 0);
82 const G4VDigiCollection* GetDigiCollection(G4int DCID, G4int eventID = 0);
83 // These two methods return the pointer to the hits and digi collection
84 // object, respectively. "HCID" and "DCID" are the ID numbers of hits and
85 // digi collections, which can be obtained vir the next two methods.
86 // If "eventID" is greater than zero, corresponding hits or digi collection
87 // of "eventID" prevuois event is returned so that event overlap can be
88 // handled. To do this, necessary number of events must be set to G4RunManager
89 // by G4RunManager::SetNumberOfEventsToBeStored() method previously to the
90 // event loop.
93 // Returns the ID number of hits and digi collections, respectively. "HCname"
94 // and "DCname" can be the collection name if it is unique, or can be detector
95 // or module name and the collection name connected by "/".
97 // This method must exclusively used by the base class of G4VDigitizerModule.
98 // To set digi collection, the user must use SetDigiCollection of G4VDigitizerModule.
99
100 public:
101 void SetVerboseLevel(G4int vl);
102 void List() const;
103
104 private:
105 static G4DigiManager * fDManager;
106 G4int verboseLevel;
107 std::vector<G4VDigitizerModule*> DMtable;
108 G4DCtable* DCtable;
109 G4DMmessenger* theMessenger;
110 G4RunManager* runManager;
111 G4SDManager* SDManager;
112
113 public:
114 inline G4int GetVerboseLevel() const
115 { return verboseLevel; }
117 { return DCtable->entries(); }
119 { return DMtable.size(); }
120 inline G4DCtable* GetDCtable() const
121 { return DCtable; }
122 inline void RestoreDCtable(G4DCtable* dc)
123 {
124 if(DCtable) delete DCtable;
125 DCtable = dc;
126 }
127
128};
129
130
131
132
133#endif
134
int G4int
Definition: G4Types.hh:66
G4int entries() const
Definition: G4DCtable.hh:66
void List() const
void AddNewModule(G4VDigitizerModule *DM)
G4int GetDigiCollectionID(G4String DCname)
G4DCtable * GetDCtable() const
G4int GetCollectionCapacity() const
const G4VHitsCollection * GetHitsCollection(G4int HCID, G4int eventID=0)
G4int GetHitsCollectionID(G4String HCname)
G4VDigitizerModule * FindDigitizerModule(G4String mName)
static G4DigiManager * GetDMpointer()
G4int GetModuleCapacity() const
void SetVerboseLevel(G4int vl)
G4int GetVerboseLevel() const
void Digitize(G4String mName)
void RestoreDCtable(G4DCtable *dc)
void SetDigiCollection(G4int DCID, G4VDigiCollection *aDC)
const G4VDigiCollection * GetDigiCollection(G4int DCID, G4int eventID=0)
static G4DigiManager * GetDMpointerIfExist()