REST version : v2.3.4
Hello!
Me and @CMargalejo were trying to apply veto cuts using TRestAnalysisPlot
. In the .rml we define in the TRestAnalysisPlot-element
<globalCut variable="veto_MaxPeakAmplitude.second" condition="<500" value="ON" />
where veto_MaxPeakAmplitude
is a std::map<int,Double_t>
, containing the channel IDs as keys and the amplitudes as values.
However, this cut increases the number of events in the final plot, compared to turning the cut off by setting value="OFF"
. How can this be?
On the other hand. using a lower threshold in the condition, for example condition="<100"
reduces the number of events compared to no cut.
This is how the draw arguments looks like (including many other cuts).
AnalysisTree->Draw("hitsAna_energy>>HitsEnergy_110(48 , 0 , 19000)", "tckAna_nTracks_X==1 && tckAna_nTracks_Y==1 && hitsAna_nHitsX>0 && hitsAna_nHitsY>0 && hitsAna_xMean*hitsAna_xMean+hitsAna_yMean*hitsAna_yMean<100 && hitsAna_energy<19000 && hitsAna_balanceXYenergy>-0.2 && hitsAna_balanceXYenergy<0.4 && hitsAna_xy2Sigma>0.05 && hitsAna_xy2Sigma<0.7 && hitsAna_xySigmaBalance>-0.3 && hitsAna_xySigmaBalance<0.4 && hitsAna_z2Sigma<4 && hitsAna_xySkew>-1 && hitsAna_xySkew<1 && hitsAna_zSkew>-2 && hitsAna_zSkew<1.8 && veto_MaxPeakAmplitude.second<500", "colz", 9223372036854775807, 0)
Another problem occurs, when I try to take only a single veto panel into account by selecting e.g. channel 4645:
<globalCut variable="veto_MaxPeakAmplitude[4645]" condition="<500" value="ON" />
In this case, not a single event remains after the cut, even if I set a condition that is fulfilled by every veto signal.
Maybe TTree->Draw()
cannot handle maps for the cuts? I read this in the root forum, but I am not sure if it is (still) true… If it is true, we would have to either expand TRestAnalysisPlot
or change how the observables are stored in TRestRawVetoAnalysisProcess
.
I also read somewhere that only a maximum of 16 cuts can be accepted, but I reproduced the problems with only the veto cut active.
Any ideas how to proceed?