Loading...
Searching...
No Matches
ExP01TrackerSD.cc
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/// \file persistency/P01/src/ExP01TrackerSD.cc
27/// \brief Implementation of the ExP01TrackerSD class
28//
29//
30//
31//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
32//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
33
34#include "ExP01TrackerSD.hh"
35#include "G4HCofThisEvent.hh"
36#include "G4Step.hh"
37#include "G4ThreeVector.hh"
38#include "G4SDManager.hh"
39#include "G4ios.hh"
40
41#include "RootIO.hh"
42
43//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
44
46 :G4VSensitiveDetector(name), fTrackerCollection(0), fHCID(0)
47{
48 G4String HCname = name + "_HC";
49 collectionName.insert(HCname);
50 G4cout << collectionName.size() << " CalorimeterSD name: " << name << " collection Name: "
51 << HCname << G4endl;
52 fHCID = -1;
53}
54
55//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
56
61
62//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
63
65{
67 (SensitiveDetectorName,collectionName[0]);
68 if (fHCID < 0) {
69 G4cout << "CalorimeterSD::Initialize: " << SensitiveDetectorName << " "
70 << collectionName[0] << G4endl;
71 fHCID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]);
72
73 }
74 HCE->AddHitsCollection(fHCID, fTrackerCollection);
75}
76
77//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
78
80{
81 G4double edep = aStep->GetTotalEnergyDeposit();
82
83 if(edep==0.) return false;
84
85 ExP01TrackerHit* newHit = new ExP01TrackerHit();
86 newHit->SetTrackID (aStep->GetTrack()->GetTrackID());
87 newHit->SetChamberNb(aStep->GetPreStepPoint()->GetTouchable()
88 ->GetReplicaNumber());
89 newHit->SetEdep (edep);
90 newHit->SetPos (aStep->GetPostStepPoint()->GetPosition());
91 fTrackerCollection->insert( newHit );
92
93 //newHit->Print();
94 //newHit->Draw();
95
96 return true;
97}
98
99//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
100
102{
103 // storing the hits in ROOT file
104 G4int NbHits = fTrackerCollection->entries();
105 std::vector<ExP01TrackerHit*> hitsVector;
106
107 {
108 G4cout << "\n-------->Storing hits in the ROOT file: in this event there are " << NbHits
109 << " hits in the tracker chambers: " << G4endl;
110 for (G4int i=0;i<NbHits;i++) (*fTrackerCollection)[i]->Print();
111 }
112
113
114 for (G4int i=0;i<NbHits;i++)
115 hitsVector.push_back((*fTrackerCollection)[i]);
116
117 RootIO::GetInstance()->Write(&hitsVector);
118
119 //
120}
121
122//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
123
G4THitsCollection< ExP01TrackerHit > ExP01TrackerHitsCollection
Definition of the ExP01TrackerSD class.
Definition of the RootIO class.
Hit implementation for the persistency example.
void SetTrackID(G4int track)
void SetPos(G4ThreeVector xyz)
void SetEdep(G4double de)
void SetChamberNb(G4int chamb)
virtual void EndOfEvent(G4HCofThisEvent *)
virtual G4bool ProcessHits(G4Step *, G4TouchableHistory *)
ExP01TrackerHitsCollection * fTrackerCollection
ExP01TrackerSD(G4String)
virtual void Initialize(G4HCofThisEvent *)
static RootIO * GetInstance()
Definition RootIO.cc:67
void Write(std::vector< ExP01TrackerHit * > *)
Definition RootIO.cc:78
void Close()
Definition RootIO.cc:95

Applications | User Support | Publications | Collaboration