Introduction
From a first look at the AcdV2 cuts applied to Pass8 data, it appears that the selection is not optimized. The goal here is to create a framework for designing an 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.
Background
- At Eric's suggestion, I looked into some of the Markus' work on Pass7 event classes. Specifically, the plot on slide 3 seem very useful, and I have started to replicate them with ACD variables.
- To do an energy dependent selection, we must have an energy measure. 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:
users/kadrlica/eventSelect/python/
However, the code is rough and should be used at your own risk!
Event Samples
Monte Carlo
The basic event samples I've been using come from the standard Pass8 MC data sets with overlays corresponding to GR-v19r4p1gr13.
#All Gamma root://glast-rdr//glast/mc/ServiceChallenge/AG-GR-v19r3p9-FAKEOVL/merit/AG-GR-v19r3p9-FAKEOVL-*-merit.root #Background root://glast-rdr//glast/mc/ServiceChallenge/BKG-GR-v19r3p9-OVL/merit/BKG-GR-v19r3p9-OVL-*-merit.root
Data
Marco Tinivella should be able to help with this and has some code that depends on Luca's MeritUtils:
/users/lbaldini/MeritUtils/
Prefilter Definition
# Irreducible Background Cut # Cut (returns 0 if event cut, 1 if event accepted) # Filter (returns 0 if event accepted, 1 if event cut) PrefilterAliasDict = { # Event triggers (really should be done in MC) "TriggerFilter":"( (GltEnginePrescale==0) && ((GltWord&34==2)||(GltWord&12>0)) && ((GltGemSummary&224)==0) )", # Passes flight software gamma filter "FswGamFilter":"(FswGamState == 0) ", # Take electrons and positrons in field-of-view; protons not from the back "FoVFilter":"( ((McZDir < -.2 && McId < 20)||(McZDir < .1 & McId > 20)) && McAcdZEnter > 100 )", # No neutral particles "ChargeFilter":"McCharge !=0", "McTHPosHitCut":"McTHPosHitOthers < 6", # No events that enter tiles but don't deposit energy "TileEnterCut":"McAcdActDistTileEnergy < .2 && !(((abs(McAcdXEnter)< 519 && abs(McAcdXEnter) > 485 ) || (abs(McAcdXEnter)< 181 && abs(McAcdXEnter) > 155 ))|| ((abs(McAcdYEnter)< 519 && abs(McAcdYEnter) > 485 ) || (abs(McAcdYEnter)< 181 && abs(McAcdYEnter) > 155 )) || (abs(McAcdXEnter)> 820 && abs(McAcdYEnter) > 820 ))", # Remove upward going particles that don't deposit energy in the ACD (not used) "AcdEngCut":"(AcdTotalEnergy+AcdRibbonEnergy<0.05) && McZDir > 0", # Combine to eliminate irreducible background... "IrrBkgFilter":"FoVFilter && ChargeFilter && !(McTHPosHitCut) && !(TileEnterCut)", #"TkrCalCore":"TkrNumTracks>0 && CalEnergyRaw > 5 && CalCsIRLn>4 && CTBCORE>0.1 && (GltGemSummary & 224) == 0", "TkrFilter":"(TkrNumTracks>0)", # Event enters CAL and deposits some energy "CalFilter":"(CalEnergyRaw > 5 && CalCsIRLn > 4)", # Track direction is well reconstructed "CoreFilter":"( ( CalTrackAngle < 0.35 / min(1., sqrt(CTBBestEnergy/20000))) || CalNumXtals < 3) && (CalTrackDoca < sqrt(100. + (15000000/max(CTBBestEnergy,10.))))", # Combine core cuts... "TkrCalCore":"(TkrFilter) && (CalFilter) && (CoreFilter)", # Events that the moments analysis failed for "Cal1MomFilter" : "(Cal1MomNumIterations > 0)", "bkg_base" : "(FswGamFilter) && (IrrBkgFilter) && (TkrFilter) && (CalFilter)", # bkg base "sig_base" : "(FswGamFilter) && (TkrFilter) && (CalFilter)", # Gamma base "cal_bkg_base" : "(FswGamFilter) && (IrrBkgFilter) && (CalFilter) && (Cal1NumXtals > 3) && (Cal1MomFilter)", #&& (CalEnergyRaw > 1000) "cal_sig_base" : "(FswGamFilter) && (CalFilter) && (Cal1NumXtals > 3) && (Cal1MomFilter)", #&& (CalEnergyRaw > 1000) "bkg_sample" : "bkg_base", "sig_sample" : "sig_base", "cal_sig_sample" : "cal_sig_base", "cal_sig_sample" : "cal_bkg_base", }
Pass 7 Event Selection
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:
BILL |
SIG |
BKG |
---|---|---|
RibbonCut_p7 |
99.66% (99.6%) |
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%) |
ALEX |
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 |