Message: How to construct a perfect energy integrating detector Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Question How to construct a perfect energy integrating detector 

Forum: Hits, Digitization and Pileup
Date: 01 Jun, 2010
From: lu luo <lu luo>


I would like to record the accumulated energy of gamma particles incident on a perfect energy-integrating detector after passing through an object (f.e. water). I simulated the perfect energy-integrating detector using “SensitiveDetector”. My simulation uses the physical effects ‘Compton scatter’, ‘Photo-electric effect’, ‘Raleigh’. To implement a perfect energy-integrating detector, I studied the detector described by SLAC ( ) and from that constructed my own detector. 1) To simulate a perfect energy integrating detector, I simulated a vacuum calorimeter. The vacuum prevents any physical interaction of the gamma rays and thus to record the accumulated kinetic energy of each photon. 2) To ensure that each gamma ray entering a detector cell is completely absorbed by that cell and does not pass to a neighboring cell, I activated the method "fStopAndKill" in the STEPPINGACTION class for each gamma ray entering the calorimeter.

I simulated an array of detector cells. When running my simulations, I observe that the energy recorded by my “SensitiveDetector” varies with the thickness of this detector. I would expect however, the deposited energy to be independent of detector thickness. I noticed that the total accumulated energy in the entire detector (total array of detector cells) is invariant to detector thickness. However, the same gamma ray may enter a neighboring cell when changing the detector thickness.

I think it's a geometrical issue, but don't see where the problem is.

All feedback is welcome. ------------------ C O D E ---------------------- Here is the part of code which specify the parameteried volume in the DetectorConstruction class:

// Mother volume(s) of the parameterised volume(s)
            det_box = new G4Box("detVol_",0.0003*cm,10.2*cm,10.2*cm);
            RepLogVol =  new G4LogicalVolume(det_box,Vacuum,"detVol_",0,0,0);             
            RepPhysVol = new G4PVPlacement(0,G4ThreeVector(4.0005*cm,0*cm,0*cm),RepLogVol,"detVol_",experimentalHall_log,false,0);

// Parameterised Cell

            det_elements = new G4Box("element_",0.0003*cm,(SizeOfPixel/2.)*cm,(SizeOfPixel/2.)*cm);
            RepElLogVol = new G4LogicalVolume(det_elements,Vacuum,"element_");
            G4VPVParameterisation* Param = new TestChamberParameterisation();
            RepElPhysVol = new G4PVParameterised("element_",RepElLogVol,RepLogVol, kYAxis, NbOfPixel, Param); 

Here is the part of code of Parameterisation class:

#define NbOfPixel 2601
#define SizeOfPixel 0.4
#define pix 51


  G4int i(0);

  for(i=0; i<NbOfPixel; i++) {
    G4int column = i / pix;
    G4int row = i % pix;
    yCell.push_back( (column-mid)*SizeOfPixel*cm );
    zCell.push_back( (row-mid)*SizeOfPixel*cm );


void TestChamberParameterisation::ComputeTransformation(const G4int copyNo, G4VPhysicalVolume* physVol)const{



Thanks for your help!


 Add Message Add Message
to: "How to construct a perfect energy integrating detector"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews

[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]