ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CCalDetector.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file CCalDetector.hh
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 //
27 // File: CCalDetector.hh
28 // Description: CCalDetector will provide the basic functionallity of a
29 // detector factory. It has a construct method that describes
30 // the construction sequence of the detector. It has a Name,
31 // a file associated with it, and a collection of other
32 // CCalDetectors that are supposed to be inside this one.
34 #ifndef CCalDetector_h
35 #define CCalDetector_h 1
36 
37 #include <iostream>
38 #include <vector>
39 #include "globals.hh"
40 
41 //Forward declartion for the CCalDetectorTable typedef
43 
44 //A table to hold a list of pointers to CMS Detectors
45 typedef std::vector<CCalDetector*> CCalDetectorTable;
46 
48 //At last the class
49 class CCalDetector {
50 
51  friend std::ostream& operator<<(std::ostream&, const CCalDetector&);
52 
53 public:
55  //Constructor with a name and a filename.
56  CCalDetector(const G4String &name);
58  //Destructor
59  virtual ~CCalDetector();
60 
61 
63  // Construction related methods
64 
65  //This starts the detector construction
67  void construct();
68 
69 
71  //A method that allows to add a new detector inside this one.
73 
74 
76  //Other get methods
77  G4String Name() const {return detectorName;}
78  G4String baseFileName() const {return fileName;}
79  G4String File() const {return fileName+".geom";}
81  G4int getNDaughters() const {return theDetectorsInside.size();}
82 
83 
85  //Local operators
86  //Equality only checks name !!!
88  return (detectorName==left.detectorName);
89  }
91  return (detectorName!=left.detectorName);
92  }
93 
94 
95 protected:
96 
98  //Pure Virtual methods
99 
100  //Should read a file and store the information inside the concrete
101  //CCalDetector
102  virtual G4int readFile() = 0;
103  //Construct the daughters by calling the apropiate constructors
104  virtual void constructDaughters() = 0;
105 
107  //Building related methods
108 
109  //Builds the detector from a file
111 
112 protected:
114  //Data Members
115 
116  G4String detectorName; //Detector name
117  G4String fileName; //File name from it will be read
118  G4String pathName; //Path in which to look for files
119 
120  CCalDetectorTable theDetectorsInside; //A collection of CCalDetectors inside
121 
122  G4int constructFlag; //True if this detector is to be built
123 };
124 
125 #endif
126 
127 
128