[Halld-offline] DBCALTruthShowers

Justin Stevens jrsteven at mit.edu
Mon Oct 20 09:05:27 EDT 2014


Hi Richard, All,

Thanks for the fix and reporting it here.  I would like to propose two additional changes:
 
1) When the scheme for keeping track of particle geneology was updated last year, hitCDC.c and hitFDC.c were changed to label the truth hits by their global track ID in the new scheme instead of the internal geant track ID.  I suggest we do the same for hitBCAL.cc and hitFCAL.c using something like

showers->in[0].track = gidGetId(track); 

This way the truth showers can be matched to DMCThrown objects and their parentage tracked accurately in more complicated events (eg. bggen). 

2) In gustep.F there are two places (code pasted at the bottom of this message) where particles are checked to be in the BCAL or FCAL to decide whether to: a) place secondaries on the stack and b) save the vertex and decay particles.  

Currently, the checks for the BCAL is if radius < 65 and (cnames(NLEVEL).ne.'BCAL').  To be consistent with the correction for the aluminum plate on the front of the BCAL, I think these should be changed to radius < 64.2485 (?) and (cnames(NLEVEL).ne.'BCAL').and.(cnames(NLEVEL).ne.'BCAM').  Do you agree?

Thanks,
Justin

gustep.F code snippet:

* Place any secondaries generated during this step onto the stack

      if (nosecondaries.eq.0) then
        do i=1,NGKINE
c          make primary except if in calorimeter volume and not hadronic
c          interaction, or except if produced in cave upstream of Hall D
           iflgk(i) = 1
           cint = KCASE
           rx = sqrt(VERT(1)**2+VERT(2)**2)
           if ((((rx>65.).and.((VERT(3)>-17.).and.(VERT(3)<390.))) !BCAL
     >         .or.(VERT(3)>625.)                                  !FCAL
     >         .or.(VERT(3)<-500.))                                !CAVE
     >         .and.(cchar.ne.'HADR')) then
              iflgk(i) = 0
           endif
           call GSKING(i)
        enddo
      endif

* check if particle did decay in which case save vertex and particles

      if (ISTOP .eq. 1) then
         mechanism = KCASE
         if ((NGKINE>0) .and. (chcase.eq.'DCAY')) then
            if ((cnames(NLEVEL).ne.'BCAL').and.
     +          (cnames(NLEVEL).ne.'FCAL').and.
     +          (sqrt(VERT(1)**2+VERT(2)**2)<65.).and.
     +          (VERT(3)<500.).and.(VERT(3)>-500.)) then
               call savenewvertex(KCASE,NGKINE,GKIN,VECT,
     +              TOFG,iflgk,IPART,ITRA,ISTAK)
            endif
         endif
      endif

On Oct 17, 2014, at 7:12 PM, Richard Jones wrote:

> Hello Justin,
> 
> You are right to be surprised by this behavior. It was not there when I first set up this "truth shower" recording mechanism in hdgeant. I looked into it, and was able to reproduce what you are seeing.
> 
> The problem is unique to the bcal. It came about primarily (there was another minor issue that I fixed at the same time, that will reduce the fragmentation of the fcalTruthShower info as well) because at some point we added a relatively thick aluminum structure to the front of the bcal, which serves as a primary mechanical support for the module. Because of its thickness, a large fraction of the incident gammas convert and preshower in this aluminum bar, and so what actually reaches the first active layer of the bcal is often a gazillion low-energy shower particles clustered around the incident gamma direction. That is why you were seeing fragmentation in the bcalTruthShower tags.
> 
> I added a fix to gustep.F in the HDGeant directory in both the trunk and commissioning branches. Please check out the latest update of whichever you are using and try it. This code catches any particles incident on the bcal and records the TruthShower info before they enter the aluminum support beam. There are still a few conversions that take place in the CDC and the FDC cables around the CDC, but you should see that most of your 2 GeV gammas at 50 degrees now generate just a single bcalTruthShower in hdgeant. For those that shower in the CDC and FDC cable material, I think we should not try to merge them into a single bcalTruthShower because the magnetic field will have a significant dispersive effect on them.
> 
> Thank you for reporting this problem. I hope this helps with bcal reconstruction.
> 
> -Richard Jones
> 
> On Tue, Oct 14, 2014 at 3:30 PM, Justin Stevens <jrsteven at mit.edu> wrote:
> Hi Richard,
> 
> I was hoping to follow up on what we talked about briefly at the collaboration meeting regarding BCAL truth showers.  I'm looking at some simulation events with single photons generated at theta = 50 degrees and E = 2 GeV.  From an earlier thread about hadronic showers on the offline list https://mailman.jlab.org/pipermail/halld-offline/2014-May/001677.html
> 
> > Once a primary particle has entered the BCAL and had its TruthShower recorded, it is marked with a spot of red dye (colloquially). Any secondaries that are generated from interactions by that particle inherit its red spot, even if they escape from that module and enter another one.
> 
> 
> I was expecting there should be only one BCAL truth shower in each event which contain a single photon.  This is the case for some events like this one from hd_dump:
> 
> DBCALTruthShower:
>  ptype: track: primary:    phi:      r:     z:     t:     p:     E:
> -------------------------------------------------------------------
>      1      1        1  -1.419  65.042  119.6  2.832  2.000  2.000
> 
> However, for most events there are many DBCALTruthShowers listed, like in the example below:
> 
> DBCALTruthShower:
>  ptype: track: primary:   phi:      r:     z:     t:     p:     E:
> ------------------------------------------------------------------
>      1      1        1  0.686  65.042  119.6  2.832  2.000  2.000
>      3      3        0  0.686  66.617  120.9  2.901  1.595  1.595
>      3      3        0  0.686  66.979  121.2  2.917  0.001  0.001
>      1      3        0  0.686  66.766  121.0  2.907  0.054  0.054
>      2      2        0  0.686  66.617  120.9  2.901  0.405  0.405
>      1      2        0  0.686  66.894  121.1  2.913  0.018  0.018
>      1      2        0  0.686  66.806  121.1  2.909  0.005  0.005
>      1      2        0  0.686  66.709  121.0  2.905  0.201  0.201
>      3      2        0  0.686  67.005  121.2  2.918  0.158  0.158
>      1      2        0  0.686  67.021  121.2  2.918  0.068  0.068
>      2      2        0  0.686  67.005  121.2  2.918  0.042  0.042
>      1      2        0  0.686  67.060  121.3  2.920  0.016  0.016
>      1      2        0  0.686  67.021  121.2  2.918  0.001  0.001
> 
> So first of all, is this the expected behavior?  That there are many DBCALTruthShowers where many of them appear to be secondaries of the primary single generated photon in the event?
> 
> And if the answer to the questions about is yes, for a general bggen event (where there are many particles incident to the BCAL) how should I best associate reconstructed BCAL showers with these DBCALTruthShowers?
> 
> Thanks,
> Justin
> 




More information about the Halld-offline mailing list