From 8f2f51887120a7b1cc2c7aff8c3101d0e69d4a2d Mon Sep 17 00:00:00 2001
From: James Beacham <j.beacham@cern.ch>
Date: Thu, 9 Nov 2017 19:55:38 +0000
Subject: [PATCH] Merge branch 'bDRAWStublet' into '21.0'

Add new DRAW_RPVLL filter for special tracking development

See merge request !6238
---
 .../python/KinkedTrackFlags.py                |  3 ++
 .../share/PhysDESDM_KinkedTrack.py            | 37 +++++++++++++++++++
 .../src/KinkTrkSingleJetMetFilterTool.cxx     | 20 +++++++---
 3 files changed, 54 insertions(+), 6 deletions(-)

diff --git a/PhysicsAnalysis/SUSYPhys/LongLivedParticleDPDMaker/python/KinkedTrackFlags.py b/PhysicsAnalysis/SUSYPhys/LongLivedParticleDPDMaker/python/KinkedTrackFlags.py
index 551fc96ffd8a..51dfcb2c0b74 100644
--- a/PhysicsAnalysis/SUSYPhys/LongLivedParticleDPDMaker/python/KinkedTrackFlags.py
+++ b/PhysicsAnalysis/SUSYPhys/LongLivedParticleDPDMaker/python/KinkedTrackFlags.py
@@ -164,6 +164,7 @@ class KinkedTrack_singleJetMetFilterFlags(JobProperty):
         'HLT_xe130_mht_L1XE50'        
         ]
     cutsEtMin = [80.0*Units.GeV, 40.0*Units.GeV]
+    cutsEtMinForStublet = [90.0*Units.GeV, 40.0*Units.GeV]
     cutsEtMinForMultiJets = [60.0*Units.GeV, 60.0*Units.GeV]
     jetMetPtMin = 40.0*Units.GeV
     cutMetHt = 0.0
@@ -175,8 +176,10 @@ class KinkedTrack_singleJetMetFilterFlags(JobProperty):
     leptonPtMax = 20.0*Units.GeV
     leptonEtaMax = 2.5
     cutMetMin = 60.0*Units.GeV  # no cut
+    cutMetMinForStublet = 90.0*Units.GeV  # no cut
     cutMetMinForMultiJets = 170.0*Units.GeV
     jetMetDphiMin = 1.0
+    preScaleStublet = 10
     pass
 primRPVLLDESDM.add_JobProperty(KinkedTrack_singleJetMetFilterFlags)
 
diff --git a/PhysicsAnalysis/SUSYPhys/LongLivedParticleDPDMaker/share/PhysDESDM_KinkedTrack.py b/PhysicsAnalysis/SUSYPhys/LongLivedParticleDPDMaker/share/PhysDESDM_KinkedTrack.py
index 1c8e914f8455..d3053c4a4900 100644
--- a/PhysicsAnalysis/SUSYPhys/LongLivedParticleDPDMaker/share/PhysDESDM_KinkedTrack.py
+++ b/PhysicsAnalysis/SUSYPhys/LongLivedParticleDPDMaker/share/PhysDESDM_KinkedTrack.py
@@ -81,6 +81,7 @@ topSequence += DerivationFramework__DerivationKernel("RPVLL_KinkedTrackJetFilter
                                                      SkimmingTools = [KinkTrkJetFilterTool])
 RPVLLfilterNames.extend(["RPVLL_KinkedTrackJetFilterKernel"])
 
+# Multi-jets filter
 KinkTrkMultiJetFilterTool = DerivationFramework__KinkTrkSingleJetMetFilterTool(name                 = "KinkTrkMultiJetFilterTool",
                                                                                LeptonVeto           = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.doLeptonVeto,
                                                                                IsolatedTrack        = False,
@@ -114,6 +115,42 @@ topSequence += DerivationFramework__DerivationKernel("RPVLL_KinkedTrackMultiJetF
                                                      SkimmingTools = [KinkTrkTrigMetMultiJetFilterTool])
 RPVLLfilterNames.extend(["RPVLL_KinkedTrackMultiJetFilterKernel"])
 
+# Stublet filter
+KinkTrkStubletFilterTool = DerivationFramework__KinkTrkSingleJetMetFilterTool(name                 = "KinkTrkStubletFilterTool",
+                                                                              LeptonVeto           = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.doLeptonVeto,
+                                                                              IsolatedTrack        = False,
+                                                                              JetContainerKey      = jetContainer,
+                                                                              ElectronContainerKey = electronContainer,
+                                                                              ElectronIDKey        = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.electronIDKey,
+                                                                              MuonContainerKey     = muonContainer,
+                                                                              MuonIDKey            = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.muonIDKey,
+                                                                              MetContainerKey      = METContainer,
+                                                                              MetTerm              = METTerm,
+                                                                              MetCut               = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.cutMetMinForStublet,
+                                                                              JetPtCuts            = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.cutsEtMinForStublet,
+                                                                              JetEtaMax            = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.cutEtaMax,
+                                                                              JetNumCut            = 1,
+                                                                              JetMetDphiMin        = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.jetMetDphiMin,
+                                                                              JetMetPtMin          = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.jetMetPtMin,
+                                                                              MetHtCut             = -1,
+                                                                              LeptonPtCut          = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.leptonPtMax,
+                                                                              LeptonEtaMax         = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.leptonEtaMax)
+
+print KinkTrkStubletFilterTool
+ToolSvc += KinkTrkStubletFilterTool
+
+KinkTrkStubletPrescaleTool = DerivationFramework__PrescaleTool(name = "KinkTrkStubletPrescaleTool",
+                                                           Prescale = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.preScaleStublet)
+ToolSvc += KinkTrkStubletPrescaleTool
+
+KinkTrkStubletFinalFilterTool = DerivationFramework__FilterCombinationAND(name = "KinkTrkStubletFinalFilterTool",
+                                                                 FilterList=[KinkTrkJetTriggerFilterTool, KinkTrkStubletFilterTool, KinkTrkStubletPrescaleTool],
+                                                                 OutputLevel=INFO)
+ToolSvc+= KinkTrkStubletFinalFilterTool 
+
+topSequence += DerivationFramework__DerivationKernel("RPVLL_KinkedTrackStubletFilterKernel",
+                                                     SkimmingTools = [KinkTrkStubletFinalFilterTool])
+RPVLLfilterNames.extend(["RPVLL_KinkedTrackStubletFilterKernel"])
 
 #====================================================================
 # Zee/Zmumu filter
diff --git a/PhysicsAnalysis/SUSYPhys/LongLivedParticleDPDMaker/src/KinkTrkSingleJetMetFilterTool.cxx b/PhysicsAnalysis/SUSYPhys/LongLivedParticleDPDMaker/src/KinkTrkSingleJetMetFilterTool.cxx
index 6698ca9bdc34..83f0023100c9 100644
--- a/PhysicsAnalysis/SUSYPhys/LongLivedParticleDPDMaker/src/KinkTrkSingleJetMetFilterTool.cxx
+++ b/PhysicsAnalysis/SUSYPhys/LongLivedParticleDPDMaker/src/KinkTrkSingleJetMetFilterTool.cxx
@@ -232,17 +232,25 @@ bool DerivationFramework::KinkTrkSingleJetMetFilterTool::eventPassesFilter() con
       if(passIsolatedTracklet==false)
 	continue;
       
-      if(TMath::Abs(Tracklet->eta()) < 0.1 || TMath::Abs(Tracklet->eta()) > 1.9)
+      if(TMath::Abs(Tracklet->eta()) < 0.1 || TMath::Abs(Tracklet->eta()) > 1.9){
+	passIsolatedTracklet = false;
 	continue;
+      }
       
-      if(TMath::Prob(Tracklet->chiSquared(), Tracklet->numberDoF()) < 0.1)
+      if(TMath::Prob(Tracklet->chiSquared(), Tracklet->numberDoF()) < 0.1){
+	passIsolatedTracklet = false;
 	continue;
-      
-      if(Tracklet->auxdata<UChar_t>("numberOfContribPixelLayers")<4)
+      }
+
+      if(Tracklet->auxdata<UChar_t>("numberOfContribPixelLayers")<4){
+	passIsolatedTracklet = false;
 	continue;
+      }
       
-      if(Tracklet->auxdata<UChar_t>("numberOfPixelSpoiltHits")>0)
-	continue;      
+      if(Tracklet->auxdata<UChar_t>("numberOfPixelSpoiltHits")>0){
+	passIsolatedTracklet = false;
+	continue;
+      }
       
       if(passIsolatedTracklet)
 	break;
-- 
GitLab