Defining condition to store an event with energy range defined at the sensitive volume

System : Any
REST version : v2.2.11

When we define several active volumes, the energyRange condition to store an event is based on the total deposited energy inside all the active volumes.

However, now, I believe the condition of energyRange should apply to the energy deposited in the sensitive volume.

<storage sensitiveVolume="gas">
<parameter name="energyRange" value="(100,50000)" units="eV" />

I believe we have 3 options:

  • Keep it as it is
  • energyRange should be the energy in the sensitive volume
  • We should create a new additional parameter to define the energy range in the sensitive volume.
0 voters

I ask you for some attention to vote on this @developers .

See also the following post.

It is confusing, what is the difference between active volume and sensitive volume? Why active volume is defined inside the xml element while sensitive is in the attribute?

The sensitive volume is a trigger volume, if no energy deposit was generated in the sensitive volume, the event is not recorded at all.

We may add any number of active volumes where energy deposits will be written to disk. Notice that it may happen that you define a sensitive volume where hits are not registered. But hits in other defined active volumes are registered.

It is documented at section - # 3. The storage section definition - from https://sultan.unizar.es/rest/classTRestG4Metadata.html

We may define any number of active volumes, and therefore <activeVolume is defined inside the xml element.

However, the parameter “energyRange” is a condition to store the event only if the total energy deposited in the defined active volumes is in that range.

What I am proposing is that the “energyRange” condition should be only the one at the sensitive volume. So, if we are interested on events that leave (0,10)keV in our detector we can define it using the energyRange.

The most complete way would be to allow defining a range for any volume, sensitive or active.

Therefore, this is just an example how it could look in the future implementation.

<storage sensitiveVolume="gas" energyRange="(0,10)keV" >
     <activeVolume name="gas" energyRange="(0,10)keV" />
     <activeVolume name="shielding" energyRange="(0,1)MeV" />
     <activeVolume name="veto" energyRange="(500,0)eV" />
</storate>

In the previous example, only events that deposit less than 10keV in the sensitive volume will be registered. While, we filter events that deposit less than 1MeV in the shielding volume, and more that 0.5keV in the veto volume.

This is just an example how it could look in the future implementation.

OK, thanks! It’s still inconvenient in your example that we need to add two same lines of “gas” volume. What if we make it more straight forward? like:

<storage>
     <volume name="gas" energyRange="(0,10)keV" triggerStore="True"/>
     <volume name="shielding" energyRange="(0,1)MeV" />
     <volume name="veto" energyRange="(500,0)eV" />
</storage>

Or like:

<storage sensitiveVolume="gas" energyRange="(0,10)keV" >
     <addOn volume="shielding" energyRange="(0,1)MeV" />
     <addOn volume="veto" energyRange="(500,0)eV" />
</storage>

The sensitive volume is not optional, it is a mandatory volume. Therefore, I find it more convenient to force its definition inside <storage.

I am open to other ways to define the XML, however, we should try to keep the nomenclature fixed. Here you are changing sensitiveVolume by triggerStore, people will be confused by this change because they are already used to the concept of sensitiveVolume.

I believe we should try to keep as close to the actual definition as possible.

Please, notice that we may have the option to define a sensitive volume where hits are not stored. Thus, in your second proposal.

<storage sensitiveVolume="gas" energyRange="(0,10)keV"> 
    <addOn volume="shielding" energyRange="(0,1)MeV" />
    <addOn volume="veto" energyRange="(500,0)eV" />
</storage>

the hits inside the gas volume will not be stored.

So, the sensitive volume may need to be re-defined as an active volume. The only inconvenience of my proposal is that I define 2 energyRanges (0,10)keV for the gas volume, one as sensitive volume, and other as active volume.

If energyRange is not defined we should leave it without any constrain. So, I could just do.

<storage sensitiveVolume="gas" energyRange="(0,10)keV" />
        <activeVolume name="gas" /> 
        <activeVolume name="shielding" energyRange="(0,1)MeV" />
        <activeVolume name="veto" energyRange="(500,0)eV" />
</storage>

Here I see no inconvenience. If I remove the <activeVolume name="gas" line I will just do not register the hits on that volume. But I will require an energy deposit in the gas volume between 0 and 10keV to register the event.

If energyRange is not defined for the volume the default energyRange will be set to (0,0). which means from 0 to infinite.