Tegan's HDGEANT and mcsmear questions

From GlueXWiki
Jump to: navigation, search


  • Sean Dobbs changed the mc_parms attenuation length to 310.
    • Shall we change both the mc_parms value and the 'variation=mc' values to 525 instead?
  • Code for grabbing attenuation lengths and effective velocities from the database on a channel-by-channel basis is done.
    • For 'variation=mc,' this is the same as using the mc_parms values.
  • Initially, when setting the energy threshold for a hit, Mark gave me a calculation that came out to 3.5 MeV. Later, Elton gave me the same calculation (with some different numbers) that came out to 2.25 MeV. The checked-in version is using 3.5 MeV, since it was done quite a long time ago. Should this be changed now?


  • The non-linear correction to the cluster energy is not doing what it should be, from what I can tell.
  • A 1 GeV photon at 90 degrees deposits about 0.945 GeV into mcsmear. The cluster energy from that output gives approximately the same. The shower energy is only marginally larger. The correction is a scale factor and an exponent. Each of those is calculated from a third-degree polynomial in zentry, using the following coefficients:
 if( ! DBCALGeometry::summingOn() ) {
   // these are energy calibration parameters -- no summing of cells
   m_scaleZ_p0 =  0.950774;
   m_scaleZ_p1 =  0.000483979;
   m_scaleZ_p2 =  -2.08086e-06;
   m_scaleZ_p3 =  8.08534e-10;
   m_nonlinZ_p0 =  0.0152548;
   m_nonlinZ_p1 =  0;
   m_nonlinZ_p2 =  0;    
   m_nonlinZ_p3 =  0;
   // these are energy calibration parameters -- summing
   //last updated for svn revision 9233 
   m_scaleZ_p0 =  0.992437;
   m_scaleZ_p1 =  0.00039242;
   m_scaleZ_p2 =  -2.23135e-06;
   m_scaleZ_p3 =  1.40158e-09;
   m_nonlinZ_p0 =  -0.0147086;
   m_nonlinZ_p1 =  9.69207e-05;
   m_nonlinZ_p2 =  0;    
   m_nonlinZ_p3 =  0;

The correction is as follows:

   float scale = m_scaleZ_p0  + m_scaleZ_p1*zEntry + m_scaleZ_p2*(zEntry*zEntry) + m_scaleZ_p3*(zEntry*zEntry*zEntry);
   float nonlin = m_nonlinZ_p0  + m_nonlinZ_p1*zEntry + m_nonlinZ_p2*(zEntry*zEntry) + m_nonlinZ_p3*(zEntry*zEntry*zEntry);
   shower->E = pow( (shower->E_raw ) / scale, 1 / ( 1 + nonlin ) );

For 90 degrees (zEntry ~ zShower - zTarget = 0), the scale and nonlin terms are just the first parameters.

When using a 1 GeV photon, where 0.945 GeV is in the cluster (E_raw above), this formulation gives a corrected shower energy of 0.95151 GeV.

    • Where exactly did these numbers come from? They must be related to Matt Shepherd's paper, but it's a bit hard to follow.
  • Should we just re-do this study for the correction, or is there a better way to do this?
    • I think having mcsmear output digihits was mentioned at some point. Do we think that's the best solution?