Introduction
After a first look at the AcdV2 cuts applied to Pass8 data, it seems like some cut optimization is in order. Additionally, from discussions with Bill it became obvious that the data sets and prefilters used in that analysis were not optimal. The goal here is to create a framework for designing the AcdV2 selection. Since it is likely that some of the Pass8 foundation will change along the way, the emphasis here is to develop tools and a methodology for creating this type of analysis. Additionally, we would like to show that we can reproduce the ACD cut efficiency found in Pass7
Background
- At Eric's suggestion, I looked into some of the work Markus did to develop the Pass7 event classes. Specifically, the plot on slide 3 seems like a very useful way to approach the ACD selection at hand.
- To examine the selection efficiency as a function of energy, we must have an event energy estimate. Carmelo has done some work to create simple energy selection for Pass8. Additionally, Carmelo has shown that for right now, CTBBestEnergy should serve adequately for this purpose.
Code Base
I've started to collect some of the code I've been developing in CVS:
Code Block |
---|
users/kadrlica/eventSelect/python/ |
However, the code is rough and should be used at your own risk!
Prefilter Definition
Prefilters are defined in more detail here.
Pass 7 Events
To compare with Bill's Pass7 results, I collected the root files that he was using. I believe that they correspond to the following data sets in the data catalog:
Code Block |
---|
#All Gamma root://glast-rdr//glast/mc/ServiceChallenge/allGamma-GR-v17r31p14-OVL/merit/allGamma-*.root #Background root://glast-rdr//glast/mc/ServiceChallenge/background-GR-v17r31p14-OVL/merit/background-*.root |
Code Block |
---|
Pass7_AcdAliasDict = { # Pass7 Acd Variables "AcdCornerDocaENorm" : "AcdCornerDoca*(min(1000, max(30, CTBBestEnergy)))^.5/10." , "AcdTkr1RibbonActDistENorm":"AcdTkr1RibbonActDist * sqrt(min(3000., max(10, CTBBestEnergy)))/10.", "AcdTkr1ActiveDistENorm":"AcdTkr1ActiveDist * sqrt(min(3000., max(10, CTBBestEnergy)))/10." , "AcdTileEventEnergyRatio":"100*AcdTkr1ActDistTileEnergy/max(10., CTBBestEnergy)" , "AcdTotalTileEventEnergyRatio":"100.*AcdTotalEnergy/max(10., CTBBestEnergy)" , "AcdTkrVActiveDistENorm":"AcdActiveDist3D * sqrt(min(3000., max(10, CTBBestEnergy)))/10." , # Why this 1* is necessary, we may never know... "AcdTkr1RibbonActDistMaxTileEnergy":"1*max(AcdTkr1RibbonActEnergyPmtA, AcdTkr1RibbonActEnergyPmtB)", # Pass7 Acd Cuts "RibbonCut_p7":"(AcdTkr1RibbonActDistENorm > -40 && Tkr1SSDVeto < 3 && AcdTkr1RibbonActDistMaxTileEnergy > .04)", "CornerCut_p7":"((Tkr1LATEdge/1.5)^2 + (AcdCornerDocaENorm - 10)^2 < 6400 && Tkr1SSDVeto < 3) || (Tkr1LATEdge < 300 && abs(AcdCornerDocaENorm-2) < 4)", "BasicTileCut_p7":"Tkr1SSDVeto< 5 && AcdTkr1ActDistTileEnergy > .7 && AcdTkr1ActiveDistENorm> -350", "TotalTileEnergyCut_p7":"AcdTotalTileEventEnergyRatio > .8 || AcdTkr1ActiveDistENorm > -200 && AcdTotalTileEventEnergyRatio > max(.005, .1 - .0001*AcdTkr1ActiveDistENorm) * max(1., CTBBestLogEnergy/2.5)", "VetoTileCut_p7":"(AcdTkrVActiveDistENorm > -60 && AcdActDistTileEnergy /sqrt(max(1., CTBBestLogEnergy-3.5)) > .9 +.15* TkrVSSDVeto)", "TileEdgeCut_p7":"Tkr1SSDVeto == 0 & abs(AcdTkr1ActiveDistENorm) < 10 & AcdTkr1ActDistTileEnergy > .025", "BasicAcdFilter_p7":"!(RibbonCut) && !(CornerCut) && !(BasicTileCut) && !(TotalTileEnergyCut) && !(VetoTileCut) && !(TileEdgeCut)", |
The first step is to compare against the event selection that Bill does. The results seem very comparable. One possible difference is that IM truncates it's floating point precision.
BILL PASS7 | SIG | BKG |
---|---|---|
RibbonCut_p7 | 99.66% (99.66%) | 88.38% (88.38%) |
CornerCut_p7 | 98.25% (98.59%) | 83.70% (94.70%) |
BasicTileCut_p7 | 90.19% (91.79%) | 16.04% (19.16%) |
TotalTileEnergyCut_p7 | 85.42% (94.71%) | 6.269% (39.09%) |
VetoTileCut_p7 | 84.37% (98.77%) | 4.384% (69.94%) |
TileEdgeCut_p7 | 84.29% (99.91%) | 4.312% (98.35%) |
PASS7 | SIG | BKG |
---|---|---|
RibbonCut_p7 | 99.6% (99.6%) – 121159 | 89.25% (89.25%) – 159950 |
CornerCut_p7 | 98.29% (98.68%) – 119564 | 85.81% (96.15%) – 153790 |
BasicTileCut_p7 | 92.64% (94.25%) – 112691 | 13.95% (16.26%) – 25009 |
TotalTileEnergyCut_p7 | 86.39% (93.25%) – 105089 | 7.007% (50.21%) – 12558 |
VetoTileCut_p7 | 84.8% (98.16%) – 103159 | 4.951% (70.66%) – 8873 |
TileEdgeCut_p7 | 84.74% (99.93%) – 103084 | 4.884% (98.65%) – 8753 |
These are actually not the final version of the Pass7 ACD cuts. The RibbonCut_p7 and the VetoTileCut_p7 were both expanded slightly...
Code Block |
---|
"RibbonCut_p7":"(AcdTkr1RibbonActDistENorm > -40 && Tkr1SSDVeto < 3 && AcdTkr1RibbonActDistMaxTileEnergy > .04) || (AcdTkr1RibbonDist > -1/(CTBBestEnergy/100) && Tkr1SSDVeto < 2)", "VetoTileCut_p7":"(AcdTkrVActiveDistENorm > -100 && AcdActDistTileEnergy /sqrt(max(1., CTBBestLogEnergy-3.5)) > .9 +.15* TkrVSSDVeto) || (abs(AcdTkrVActiveDistENorm) < 15 && AcdActDistTileEnergy > .25 && TkrVSSDVeto < 2)", |
The net effect on the signal and background efficiency is small...
CUT | SIG | BKG |
---|---|---|
TileEdgeCut_p7 | 83.96% (99.96%) – 102135 | 4.755% (99.93%) – 8522 |
and I will use these final Pass 7 cuts in subsequent comparisons with Pass 8 data.
Selection Efficiency as a Function of Energy
Name | Individual Selection | Selection with Respect to Complement |
---|---|---|
RibbonVeto |
|
|
CornerVeto |
|
|
BasicTileVeto |
|
|
TotalTileEnergyVeto |
|
|
TkrVTileVeto |
|
|
TileEdgeVeto |
|
|
Sequential Cuts (Sig) | Sequential Cuts (Bkg) |
---|---|
|
|
Pass 8 Events
Data Set
The Pass8 event samples I use come from the standard Pass8 MC data sets with overlays corresponding to GR-v19r4p1gr13.
Code Block |
---|
#All Gamma root://glast-rdr//glast/mc/ServiceChallenge/AG-GR-v19r4p1gr13-FAKEOVL/merit/AG-GR-v19r4p1gr13-OVL-*-merit.root #Background root://glast-rdr//glast/mc/ServiceChallenge/BKG-GR-v19r4p1gr13-OVL/merit/BKG-GR-v19r4p1gr13-OVL-*-merit.root |
AcdRecon vs AcdReconV2
We apply the same pass7 cuts to the Pass8 data. As expected, the cuts do not perform as well. Specifically, the BasicTileCut_p7 has lost background rejection power and the TotalTileEnergyCut_p7 has decreased efficiency for signal.
PASS7 | SIG | BKG |
---|---|---|
RibbonCut_p7 | 99.01% (99.01%) – 60482 | 89.9% (89.9%) – 50790 |
CornerCut_p7 | 97.99% (98.96%) – 59856 | 86.69% (96.43%) – 48978 |
BasicTileCut_p7 | 92.92% (94.83%) – 56762 | 22.79% (26.29%) – 12875 |
TotalTileEnergyCut_p7 | 82.87% (89.18%) – 50623 | 11.72% (51.42%) – 6620 |
VetoTileCut_p7 | 79.49% (95.91%) – 48555 | 8.284% (70.69%) – 4680 |
TileEdgeCut_p7 | 79.45% (99.95%) – 48533 | 8.273% (99.87%) – 4674 |
Translating the Pass7 cuts to the new Acd2 variable equivalents, we find comparable results. This means that from the ACD precut point of view, we can turn off the old AcdReconAlg without any significant loss of efficiency. As a note, this study uses roughly 15% of the allGamma events and 25% of the background sample.
PASS7 ACD2 | SIG | BKG |
---|---|---|
RibbonCut2_p7 | 99.01% (99.01%) – 60482 | 89.9% (89.9%) – 50790 |
CornerCut2_p7 | 97.99% (98.96%) – 59856 | 86.69% (96.43%) – 48978 |
BasicTileCut2_p7 | 92.92% (94.83%) – 56760 | 22.73% (26.22%) – 12843 |
TotalTileEnergyCut2_p7 | 83.05% (89.38%) – 50732 | 11.96% (52.63%) – 6759 |
VetoTileCut2_p7 | 79.64% (95.89%) – 48649 | 8.443% (70.57%) – 4770 |
TileEdgeCut2_p7 | 79.61% (99.95%) – 48627 | 8.433% (99.87%) – 4764 |
Pass 8 Cuts
Correcting the gamma efficiency of TotalTileEnergy Cut and appending the Cal1ConeCut_p8 at the end. It can be seen that without the Cal1ConeCut, nearly twice as much background sneaks through. The power of the Cal1ConeCut is quite impressive.
PASS7 ACD2 | SIG | BKG |
---|---|---|
RibbonCut2_p7 | 99.01% (99.01%) – 60482 | 89.9% (89.9%) – 50790 |
CornerCut2_p7 | 97.99% (98.96%) – 59856 | 86.69% (96.43%) – 48978 |
BasicTileCut2_p7 | 92.92% (94.83%) – 56760 | 22.73% (26.22%) – 12843 |
TotalTileEnergyCut2_p7 | 86.05% (92.61%) – 52566 | 13.42% (59.03%) – 7581 |
VetoTileCut2_p7 | 82.59% (95.98%) – 50452 | 9.709% (72.35%) – 5485 |
TileEdgeCut2_p7 | 82.54% (99.94%) – 50421 | 9.693% (99.84%) – 5476 |
Cal1ConeCut_p8 | 80.34% (97.33%) – 49073 | 4.461% (46.02%) – 2520 |
PASS8 | SIG | BKG |
---|---|---|
RibbonVeto_p8 | 99.5% (99.5%) | 89.9% (89.9%) |
CornerVeto_p8 | 98.6% (99.1%) | 86.9% (96.6%) |
Tkr1SigmaVeto_p8 | 93.3% (94.7%) | 22.5% (25.9%) |
TkrSigmaHitVeto_p8 | 88.7% (95%) | 16.6% (73.7%) |
Tkr1ConeVeto_p8 | 83.7% (94.3%) | 10.5% (63.6%) |
Cal1ConeVeto_p8 | 81.7% (97.6%) | 4.96% (47.1%) |
Wiki Markup |
---|
{htmlcomment:hidden} || OLD PASS8 || SIG || BKG || | VetoHit1Cut_p8 | 95.12% (95.12%) -- 58105 | 26.2% (26.2%) -- 14802 | | TotalTileEnergyCut_p8 | 86.53% (90.96%) -- 52855 | 12.83% (48.99%) -- 7251 | | VetoGap1Cut_p8 | 86.36% (99.8%) -- 52750 | 12.65% (98.52%) -- 7144 | | VetoHitCut_p8 | 85.53% (99.05%) -- 52247 | 12.06% (95.34%) -- 6811 | | Cal1ConeCut_p8 | 82.85% (96.86%) -- 50609 | 5.245% (43.5%) -- 2963 | {htmlcomment} |
The power of the Cal1ConeCut comes from the fact that the majority of the residual background is sneaking through the bottom of the TKR. The direction of these events is poorly reconstructed since, especially at high energy, the longest straightest track will often come from back-splash. On the other hand, the CAL axis will point along the direction of the incident particle causing the ACD to query the proper tiles.
P7 Residual BKG | P8 Residual BKG (P7 CUTS) | P8 Residual BKG w/CAL (P7 CUTS) | P8 CAL CUT |
---|---|---|---|
|
|
|
Selection Efficiency as a Function of Energy
Name | Individual Selection | Selection with Respect to Complement |
---|---|---|
RibbonVeto |
|
|
CornerVeto |
|
|
Tkr1SigmaVeto |
|
|
TkrSigmaHitVeto |
|
|
Tkr1ConeVeto |
|
|
Cal1ConeVeto |
|
|
Sequential Selections (Sig) | Sequential Selections (Bkg) |
---|---|
|
|