Index: cards/delphes_card_CMS_CSCCluster.tcl
===================================================================
--- cards/delphes_card_CMS_CSCCluster.tcl	(revision d1ab205da9b911e692e7fb2474f1c9effdce4853)
+++ cards/delphes_card_CMS_CSCCluster.tcl	(revision 157fe1366e381630b70ab906a5dd4234b8a8f487)
@@ -411,8 +411,16 @@
   set InputArray Delphes/allParticles
   set OutputArray LLP
-  # DecayRegion = 0: no cuts on decay region
-  # DecayRegion = 1: select LLP that decays in CSC volume
-  # DecayRegion = 2: select LLP that decays outside of calorimeters, for genMET calculation
-  set DecayRegion 1
+
+  # CMS CSC region
+  # used detector geometry in Figure 4.1.1, page141 from CERN-LHCC-97-032: https://cds.cern.ch/record/343814?ln=en
+
+  set RequireDecayRegion true
+  set DecayRegionRMax 6955
+  set DecayRegionRMin 0
+  set DecayRegionZMax 11000
+  set DecayRegionZMin 4000
+  set DecayRegionEtaMax 2
+  set DecayRegionEtaMin 0
+
   set RequireStatus false
   add PdgCode {1500001}
@@ -424,8 +432,7 @@
   set InputArray Delphes/allParticles
   set OutputArray LLP
-  # DecayRegion = 0: no cuts on decay region
-  # DecayRegion = 1: select LLP that decays in CSC volume
-  # DecayRegion = 2: select LLP that decays outside of calorimeters, for genMET calculation
-  set DecayRegion 0
+  set RequireDecayRegion false
+
+
   set RequireStatus false
   add PdgCode {1500001}
Index: modules/LLPFilter.cc
===================================================================
--- modules/LLPFilter.cc	(revision d1ab205da9b911e692e7fb2474f1c9effdce4853)
+++ modules/LLPFilter.cc	(revision 157fe1366e381630b70ab906a5dd4234b8a8f487)
@@ -22,4 +22,5 @@
  *  The classification of EM and hadronic energy of LLP is based on instructions from the HEPData entry for the CMS paper searching
  *  for neutral LLPs in the CMS endcap muon detectors: https://www.hepdata.net/record/104408
+ *  Muons and neutrinos are ignored. Photons, electrons, and pi0 are EM energy and everything else is hadronic energy.
  *
  *  \author Christina Wang
@@ -77,7 +78,13 @@
 
   fInvert = GetBool("Invert", false);
-  fDecayRegion = GetInt("DecayRegion", 0);
   fDaughterNumber = GetInt("DaughterNumber", 0);
-
+  fRequireDecayRegion = GetBool("RequireDecayRegion", 0);
+
+  fDecayRegionRMax = GetInt("DecayRegionRMax", 0); //mm
+  fDecayRegionRMin = GetInt("DecayRegionRMin", 0); //mm
+  fDecayRegionZMax = GetInt("DecayRegionZMax", 0); //mm
+  fDecayRegionZMin = GetInt("DecayRegionZMin", 0); //mm
+  fDecayRegionEtaMax = GetInt("DecayRegionEtaMax", 0); // requirement on abs(eta)
+  fDecayRegionEtaMin = GetInt("DecayRegionEtaMin", 0); //requirement on abs(eta)
 
 
@@ -148,5 +155,4 @@
     const TLorentzVector &candidateProdPosition = candidate->Position;
     const TLorentzVector &candidateDecayPosition = candidate->DecayPosition;
-    // TLorentzVector candidateDecayPosition;
     pt = candidateMomentum.Pt();
     eta = candidateMomentum.Eta();
@@ -184,19 +190,15 @@
       if (tempCandidate->M1 == -1) continue;
 
-      // candidateDecayPosition = daughter->Position;
-
+      // assign LLP EM or hadronic energy, depending on the daughter ID
       if (abs(daughterPdg)==11 || abs(daughterPdg)==22 || abs(daughterPdg)==111)candidate->Eem += daughterMomentum.E();
       else candidate->Ehad += daughterMomentum.E();
     }
 
-    // used detector geometry in Figure 4.1.1, page141 from CERN-LHCC-97-032: https://cds.cern.ch/record/343814?ln=en
-    // decayRegion = 0: no cuts on decay region
-    // decayRegion = 1: select LLP that decays in CSC volume
-    // decayRegion = 2: select LLP that decays outside of calorimeters
-    if (fDecayRegion == 1)
+    if (fRequireDecayRegion)
     {
-      if (abs(eta) < 2
-         && abs(candidateDecayPosition.Z())<11000 && abs(candidateDecayPosition.Z())>4000
-         && sqrt(pow(candidateDecayPosition.X(),2)+pow(candidateDecayPosition.Y(),2)) < 6955)
+      if (abs(eta) < fDecayRegionEtaMax && abs(eta) > fDecayRegionEtaMin
+         && abs(candidateDecayPosition.Z()) < fDecayRegionZMax && abs(candidateDecayPosition.Z()) > fDecayRegionZMin
+         && sqrt(pow(candidateDecayPosition.X(),2)+pow(candidateDecayPosition.Y(),2)) < fDecayRegionRMax
+         && sqrt(pow(candidateDecayPosition.X(),2)+pow(candidateDecayPosition.Y(),2)) > fDecayRegionRMin)
       {
         fOutputArray->Add(candidate);
@@ -204,11 +206,4 @@
 
     }
-    else if(fDecayRegion == 2)
-    {
-      if (abs(candidateDecayPosition.Z()) > 5680 && sqrt(pow(candidateDecayPosition.X(),2)+pow(candidateDecayPosition.Y(),2)) > 3000)
-      {
-        fOutputArray->Add(candidate);
-      }
-    }
     else{
       fOutputArray->Add(candidate);
Index: modules/LLPFilter.h
===================================================================
--- modules/LLPFilter.h	(revision d1ab205da9b911e692e7fb2474f1c9effdce4853)
+++ modules/LLPFilter.h	(revision 157fe1366e381630b70ab906a5dd4234b8a8f487)
@@ -51,5 +51,11 @@
 private:
   Double_t fPTMin; //!
-  Int_t fDecayRegion;
+  Bool_t fRequireDecayRegion;
+  Int_t fDecayRegionRMax;
+  Int_t fDecayRegionRMin;
+  Int_t fDecayRegionZMax;
+  Int_t fDecayRegionZMin;
+  Int_t fDecayRegionEtaMax;
+  Int_t fDecayRegionEtaMin;
   Int_t fDaughterNumber;
   Bool_t fInvert; //!
