Message: Segmentation Fault in CCalSteppingAction::UserSteppingAction --- composite_calorimeter code Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Question Segmentation Fault in CCalSteppingAction::UserSteppingAction --- composite_calorimeter code 

Forum: Analysis
Date: 17 May, 2012
From: Dylan <Dylan>

I am currently working on a modified version of the composite_calorimeter example in Geant 4, which simulates the HCal in the CMS detector.

I have come across a problem involving the TSliceID variable in CCalSteppingAction::UserSteppingAction (located in CCalSteppingAction.cc).

A global time value is returned via PostStepPoint->GetGlobalTime() and this value rounded to an integer which is then used to reference the 200 member timeDeposit[] array and increment the appropriate energy to the corresponding member of the array.

However, I have found that a segmentation fault is occurring and causing the program to crash, due to this global time value spontaneously taking an extremely large value (after a random number of steps, usually several thousand, which varies with initial conditions). For example 2.0177806e+12 ns, or 2.525698e+11 ns, when it should be taking a value between 0 and 200 nanoseconds.

This somehow causes the rounding operation which occurs in the following line to assign a large negative integer to TSliceID. This value is always the same, regardless of the global time returned from PostStepPoint, setting TSliceID = -2147483648:

TSliceID = static_cast<int>( (PostStepPoint->GetGlobalTime() ) / nanosecond);

The segmentation fault occurs when CCalSteppingAction::UserSteppingAction tries to write to the -2147483648th member of the 200 member timeDeposit[] array, here:

timeDeposit[TSliceID] += aStep->GetTotalEnergyDeposit() / GeV;

I am posting here to see if anyone knows why this extremely large value is being returned by PostStepPoint->GetGlobalTime (rather than a value in the range 0 to 200 nanoseconds), or if anyone can suggest a possible cause or solution to this crash.

Best regards,

Dylan

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 Note: Re: Segmentation Fault in CCalSteppingAction::UserSteppingAction --- composite_calorimeter code   (Dylan - 08 Jun, 2012)
 Add Message Add Message
to: "Segmentation Fault in CCalSteppingAction::UserSteppingAction --- composite_calorimeter code"

 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 ]