ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CCaloSD.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file CCaloSD.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: CCaloSD.hh
28 // Description: Stores hits of calorimetric type in appropriate container
29 //
30 // Use in your geometry routine:
31 // CCaloSD* caloSD = new CCaloSD(SDname, new CalorimeterOrganization);
32 // G4SDManager::GetSDMpointer()->AddNewDetector(caloSD);
33 // and then for every Logical Volume to be declared as sensitive
34 // logVolume->SetSensitiveDetector(caloSD);
35 //
37 
38 #ifndef CCaloSD_h
39 #define CCaloSD_h 1
40 
41 #include "CCalG4HitCollection.hh"
42 #include "CCalG4Hit.hh"
43 
44 #include "G4VPhysicalVolume.hh"
45 #include "G4LogicalVolume.hh"
46 #include "G4Track.hh"
47 #include "G4ParticleDefinition.hh"
48 #include "G4Step.hh"
50 #include "G4VSensitiveDetector.hh"
51 
52 #include <iostream>
53 #include <fstream>
54 
55 class CCalVOrganization;
56 
57 //#define debug
58 
60 {
61 
62 public:
63 
64  CCaloSD(G4String aSDname, CCalVOrganization* numberingScheme);
65  virtual ~CCaloSD();
66 
67  void Initialize(G4HCofThisEvent*HCE);
69  void EndOfEvent(G4HCofThisEvent*HCE);
70  void clear();
71  void DrawAll();
72  void PrintAll();
73 
74 public:
75 
76  void SetPrimaryID(G4int i) {PrimaryID = i;}
79 
80 private:
81 
82  G4ThreeVector SetToLocal(const G4ThreeVector& globalPoint) const;
83  void getStepInfo(const G4Step* aStep);
84  G4bool hitExists();
85  void createNewHit();
86  void updateHit();
87  void StoreHit(CCalG4Hit* ahit);
88  void ResetForNewPrimary();
89  void summarize();
90  G4double curve_LY(const G4StepPoint* stepPoint);
91 
92  // Data relative to primary particle (the one which triggers a shower)
93  // These data are common to all Hits of a given shower.
94  // One shower is made of several hits which differ by the
95  // unit ID (cristal/fiber/scintillator) and the Time slice ID.
96 
99  G4int PrimID ; //@@ ID of the primary particle.
100 
104 
110  unsigned int UnitID, PreviousUnitID;
113 
118 
120 
121 };
122 
123 #endif