ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CexmcReconstructor.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file CexmcReconstructor.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 //
26 /*
27  * =============================================================================
28  *
29  * Filename: CexmcReconstructor.hh
30  *
31  * Description: reconstructor base class
32  *
33  * Version: 1.0
34  * Created: 02.12.2009 15:44:12
35  * Revision: none
36  * Compiler: gcc
37  *
38  * Author: Alexey Radkov (),
39  * Company: PNPI
40  *
41  * =============================================================================
42  */
43 
44 #ifndef CEXMC_RECONSTRUCTOR_HH
45 #define CEXMC_RECONSTRUCTOR_HH
46 
47 #include <G4ThreeVector.hh>
48 #include <G4AffineTransform.hh>
49 #include "CexmcSetup.hh"
50 #include "CexmcCommon.hh"
51 
54 
55 
57 {
58  public:
59  explicit CexmcReconstructor();
60 
61  virtual ~CexmcReconstructor();
62 
63  public:
64  virtual void Reconstruct( const CexmcEnergyDepositStore * edStore );
65 
66  public:
69 
72 
75 
76  void UseInnerRefCrystal( G4bool on = true );
77 
79 
82 
85 
87  GetCrystalSelectionAlgorithm( void ) const;
88 
89  G4bool IsInnerRefCrystalUsed( void ) const;
90 
92 
93  public:
94  const G4ThreeVector & GetCalorimeterEPLeftPosition( void ) const;
95 
96  const G4ThreeVector & GetCalorimeterEPRightPosition( void ) const;
97 
98  const G4ThreeVector & GetCalorimeterEPLeftDirection( void ) const;
99 
100  const G4ThreeVector & GetCalorimeterEPRightDirection( void ) const;
101 
102  const G4ThreeVector & GetTargetEPPosition( void ) const;
103 
104  const G4ThreeVector & GetTargetEPDirection( void ) const;
105 
106  const G4ThreeVector & GetCalorimeterEPLeftWorldPosition( void ) const;
107 
109 
111 
113  const;
114 
115  const G4ThreeVector & GetTargetEPWorldPosition( void ) const;
116 
117  const G4ThreeVector & GetTargetEPWorldDirection( void ) const;
118 
119  G4double GetTheAngle( void ) const;
120 
121  public:
122  G4bool HasBasicTrigger( void ) const;
123 
124  virtual G4bool HasFullTrigger( void ) const;
125 
126  protected:
128  const CexmcEnergyDepositStore * edStore );
129 
130  void ReconstructTargetPoint( void );
131 
132  void ReconstructAngle( void );
133 
134  private:
137  G4int row, G4int column, G4double & ed );
138 
141  G4int row, G4int column, G4double & x, G4double & y,
142  G4double & ed );
143 
144  void TransformToAdjacentInnerCrystal( G4int & column,
145  G4int & row ) const;
146 
147  protected:
149 
150  protected:
152 
155 
157 
159 
161 
162  protected:
164 
166 
168 
170 
172 
174 
176 
178 
180 
182 
184 
186 
188 
189  protected:
191 
193 
195 
196  private:
198 
200 
202 
204 
206 
207  private:
209 };
210 
211 
214 {
215  epDefinitionAlgorithm = algo;
216 }
217 
218 
219 inline void
222 {
224 }
225 
226 
229 {
230  csAlgorithm = algo;
231 }
232 
233 
235 {
236  useInnerRefCrystal = on;
237 }
238 
239 
241  G4double depth )
242 {
243  epDepth = depth;
244 }
245 
246 
249  const
250 {
251  return epDefinitionAlgorithm;
252 }
253 
254 
257  void ) const
258 {
260 }
261 
262 
265 {
266  return csAlgorithm;
267 }
268 
269 
271 {
272  return useInnerRefCrystal;
273 }
274 
275 
277 {
278  return epDepth;
279 }
280 
281 
282 inline const G4ThreeVector &
284 {
286 }
287 
288 
289 inline const G4ThreeVector &
291 {
293 }
294 
295 
296 inline const G4ThreeVector &
298 {
300 }
301 
302 
303 inline const G4ThreeVector &
305 {
307 }
308 
309 
310 inline const G4ThreeVector &
312 {
313  return targetEPPosition;
314 }
315 
316 
317 inline const G4ThreeVector &
319 {
320  return targetEPDirection;
321 }
322 
323 
324 inline const G4ThreeVector &
326 {
328 }
329 
330 
331 inline const G4ThreeVector &
333 {
335 }
336 
337 
338 inline const G4ThreeVector &
340 {
342 }
343 
344 
345 inline const G4ThreeVector &
347 {
349 }
350 
351 
352 inline const G4ThreeVector &
354 {
355  return targetEPWorldPosition;
356 }
357 
358 
359 inline const G4ThreeVector &
361 {
362  return targetEPWorldDirection;
363 }
364 
365 
367 {
368  return theAngle;
369 }
370 
371 
373 {
374  return hasBasicTrigger;
375 }
376 
377 
379  G4int & column, G4int & row ) const
380 {
381  if ( column == 0 )
382  ++column;
383  if ( column == calorimeterGeometry.nCrystalsInRow - 1 )
384  --column;
385  if ( row == 0 )
386  ++row;
387  if ( row == calorimeterGeometry.nCrystalsInColumn - 1 )
388  --row;
389 }
390 
391 
392 #endif
393