musrTrackerSD.cc

Go to the documentation of this file.
00001 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
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 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00011 
00012 musrTrackerSD::musrTrackerSD(G4String name)
00013 :G4VSensitiveDetector(name)
00014 {
00015   G4String HCname;
00016   collectionName.insert(HCname="trackerCollection");
00017 }
00018 
00019 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00020 
00021 musrTrackerSD::~musrTrackerSD(){ }
00022 
00023 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
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 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
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 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
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 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00070 

Generated on Mon Mar 27 12:19:54 2006 for MUSR by  doxygen 1.4.6