ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Mods/src/MuonIDMod.cc
(Generate patch)

Comparing UserCode/MitPhysics/Mods/src/MuonIDMod.cc (file contents):
Revision 1.41 by ceballos, Fri Mar 11 15:13:09 2011 UTC vs.
Revision 1.46 by ceballos, Tue Apr 5 06:37:07 2011 UTC

# Line 19 | Line 19 | ClassImp(mithep::MuonIDMod)
19    fNonIsolatedMuonsName("random"),  
20    fNonIsolatedElectronsName("random"),  
21    fVertexName(ModNames::gkGoodVertexesName),
22 +  fBeamSpotName(Names::gkBeamSpotBrn),
23    fTrackName(Names::gkTrackBrn),
24    fPFCandidatesName(Names::gkPFCandidatesBrn),
25    fMuonIDType("WWMuId"),
# Line 29 | Line 30 | ClassImp(mithep::MuonIDMod)
30    fCombIsolationCut(0.15),
31    fMuonPtMin(10),
32    fApplyD0Cut(kTRUE),
33 +  fApplyDZCut(kTRUE),
34    fD0Cut(0.020),
35 +  fDZCut(0.20),
36 +  fWhichVertex(-1),
37    fEtaCut(2.4),
34  fReverseIsoCut(kFALSE),
35  fReverseD0Cut(kFALSE),
38    fMuIDType(kIdUndef),
39    fMuIsoType(kIsoUndef),
40    fMuClassType(kClassUndef),
41    fMuons(0),
42    fVertices(0),
43 +  fBeamSpot(0),
44    fTracks(0),
45    fPFCandidates(0),
46    fNonIsolatedMuons(0),
# Line 59 | Line 62 | void MuonIDMod::Process()
62    else {
63      fMuons = GetObjThisEvt<MuonOArr>(fMuonBranchName);
64    }
65 +  LoadEventObject(fBeamSpotName, fBeamSpot);
66    LoadEventObject(fTrackName, fTracks);
67    LoadEventObject(fPFCandidatesName, fPFCandidates);
68    if(fMuIsoType == kTrackCaloSliding) {
# Line 208 | Line 212 | void MuonIDMod::Process()
212          break;
213        case kTrackCaloSliding:
214          {
211          //Double_t beta = IsolationTools::BetaM(fTracks, mu, fVertices->At(0), 0.0, 0.2, 0.3, 0.02);
212          //if(beta == 0) beta = 1.0;
215            const PileupEnergyDensity *rho =  fPileupEnergyDensity->At(0);
216            Double_t totalIso =  mu->IsoR03SumPt() + TMath::Max(mu->IsoR03EmEt() + mu->IsoR03HadEt() - rho->Rho() * TMath::Pi() * 0.3 * 0.3, 0.0);
217 <          if (totalIso < (mu->Pt()*fCombIsolationCut) )
218 <            isocut = kTRUE;
219 <
220 <          if     (fReverseIsoCut == kTRUE &&
221 <                  isocut == kFALSE && totalIso < 10)
222 <            isocut = kTRUE;
223 <          else if(fReverseIsoCut == kTRUE)
222 <            isocut = kFALSE;
217 >          // trick to change the signal region cut
218 >          double theIsoCut = fCombIsolationCut;
219 >          if(theIsoCut < 0.20){
220 >            if(mu->Pt() >  20.0) theIsoCut = 0.15;
221 >            else                 theIsoCut = 0.10;
222 >          }
223 >          if (totalIso < (mu->Pt()*theIsoCut)) isocut = kTRUE;
224          }
225          break;
226        case kTrackCaloSlidingNoCorrection:
# Line 227 | Line 228 | void MuonIDMod::Process()
228            Double_t totalIso =  1.0 * mu->IsoR03SumPt() +
229                                 1.0 * mu->IsoR03EmEt()  +
230                                 1.0 * mu->IsoR03HadEt();
231 <          if (totalIso < (mu->Pt()*fCombIsolationCut) )
232 <            isocut = kTRUE;
231 >          // trick to change the signal region cut
232 >          double theIsoCut = fCombIsolationCut;
233 >          if(theIsoCut < 0.20){
234 >            if(mu->Pt() >  20.0) theIsoCut = 0.15;
235 >            else                 theIsoCut = 0.10;
236 >          }
237 >          if (totalIso < (mu->Pt()*theIsoCut)) isocut = kTRUE;
238          }
239          break;
240        case kPFIso:
# Line 263 | Line 269 | void MuonIDMod::Process()
269      if (isocut == kFALSE)
270        continue;
271  
272 +    // apply d0 cut
273      if (fApplyD0Cut) {
274 <      Bool_t passD0cut = MuonTools::PassD0Cut(mu, fVertices, fD0Cut);
274 >      Bool_t passD0cut = kTRUE;
275 >      if(fD0Cut < 0.05) { // trick to change the signal region cut
276 >        if      (mu->Pt() >  20.0) fD0Cut = 0.02;
277 >        else if (mu->Pt() <= 20.0) fD0Cut = 0.01;
278 >      }
279 >      if(fWhichVertex >= -1) passD0cut = MuonTools::PassD0Cut(mu, fVertices, fD0Cut, fWhichVertex);
280 >      else                   passD0cut = MuonTools::PassD0Cut(mu, fBeamSpot, fD0Cut);
281        if (!passD0cut)
282          continue;
283      }
284  
285 +    // apply dz cut
286 +    if (fApplyDZCut) {
287 +      Bool_t passDZcut = MuonTools::PassDZCut(mu, fVertices, fDZCut, fWhichVertex);
288 +      if (!passDZcut)
289 +        continue;
290 +    }
291 +
292      // add good muon
293      CleanMuons->Add(mu);
294    }
# Line 290 | Line 310 | void MuonIDMod::SlaveBegin()
310    if (fMuonIsoType.CompareTo("PFIsoNoL") != 0) {
311      ReqEventObject(fMuonBranchName, fMuons, kTRUE);
312    }
313 +  ReqEventObject(fBeamSpotName, fBeamSpot, kTRUE);
314    ReqEventObject(fTrackName, fTracks, kTRUE);
315    ReqEventObject(fPFCandidatesName, fPFCandidates, kTRUE);
316    if (fMuonIsoType.CompareTo("TrackCaloSliding") == 0) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines