00001
00002
00003 #include "musrTrackerSD.hh"
00004 #include "G4HCofThisEvent.hh"
00005 #include "G4Step.hh"
00006 #include "G4ThreeVector.hh"
00007 #include "G4SDManager.hh"
00008 #include "G4ios.hh"
00009
00010
00011
00012 musrTrackerSD::musrTrackerSD(G4String name)
00013 :G4VSensitiveDetector(name)
00014 {
00015 G4String HCname;
00016 collectionName.insert(HCname="trackerCollection");
00017 }
00018
00019
00020
00021 musrTrackerSD::~musrTrackerSD(){ }
00022
00023
00024
00025 void musrTrackerSD::Initialize(G4HCofThisEvent* HCE)
00026 {
00027 trackerCollection = new musrTrackerHitsCollection
00028 (SensitiveDetectorName,collectionName[0]);
00029 static G4int HCID = -1;
00030 if(HCID<0)
00031 { HCID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]); }
00032 HCE->AddHitsCollection( HCID, trackerCollection );
00033 }
00034
00035
00036
00037 G4bool musrTrackerSD::ProcessHits(G4Step* aStep,G4TouchableHistory*)
00038 {
00039 G4double edep = aStep->GetTotalEnergyDeposit();
00040
00041 if(edep==0.) return false;
00042
00043 musrTrackerHit* newHit = new musrTrackerHit();
00044 newHit->SetParticleName (aStep->GetTrack()->GetDefinition()->GetParticleName());
00045 newHit->SetTrackID (aStep->GetTrack()->GetTrackID());
00046 newHit->SetEdep (edep);
00047 newHit->SetPos (aStep->GetPostStepPoint()->GetPosition());
00048 newHit->SetPol (aStep->GetTrack()->GetPolarization());
00049 trackerCollection->insert( newHit );
00050
00051 newHit->Print();
00052 newHit->Draw();
00053
00054 return true;
00055 }
00056
00057
00058
00059 void musrTrackerSD::EndOfEvent(G4HCofThisEvent*)
00060 {
00061 if (verboseLevel>0) {
00062 G4int NbHits = trackerCollection->entries();
00063 G4cout << "\n-------->Hits Collection: in this event they are " << NbHits
00064 << " hits in the tracker chambers: " << G4endl;
00065 for (G4int i=0;i<NbHits;i++) (*trackerCollection)[i]->Print();
00066 }
00067 }
00068
00069
00070