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.46 by ceballos, Tue Apr 5 06:37:07 2011 UTC vs.
Revision 1.55 by sixie, Fri Jul 22 15:45:38 2011 UTC

# Line 22 | Line 22 | ClassImp(mithep::MuonIDMod)
22    fBeamSpotName(Names::gkBeamSpotBrn),
23    fTrackName(Names::gkTrackBrn),
24    fPFCandidatesName(Names::gkPFCandidatesBrn),
25 <  fMuonIDType("WWMuId"),
26 <  fMuonIsoType("TrackCaloSliding"),
25 >  fMuonIDType("WWMuIdV1"),
26 >  fMuonIsoType("PFIso"),
27    fMuonClassType("Global"),  
28    fTrackIsolationCut(3.0),
29    fCaloIsolationCut(3.0),
30    fCombIsolationCut(0.15),
31 +  fCombRelativeIsolationCut(0.15),
32 +  fPFIsolationCut(-1.0),
33    fMuonPtMin(10),
34    fApplyD0Cut(kTRUE),
35    fApplyDZCut(kTRUE),
36    fD0Cut(0.020),
37 <  fDZCut(0.20),
37 >  fDZCut(0.10),
38    fWhichVertex(-1),
39    fEtaCut(2.4),
40    fMuIDType(kIdUndef),
# Line 65 | Line 67 | void MuonIDMod::Process()
67    LoadEventObject(fBeamSpotName, fBeamSpot);
68    LoadEventObject(fTrackName, fTracks);
69    LoadEventObject(fPFCandidatesName, fPFCandidates);
70 <  if(fMuIsoType == kTrackCaloSliding) {
70 >  if(fMuIsoType == kTrackCaloSliding || fMuIsoType == kCombinedRelativeConeAreaCorrected) {
71      LoadEventObject(fPileupEnergyDensityName, fPileupEnergyDensity);
72    }
73    MuonOArr *CleanMuons = new MuonOArr;
# Line 98 | Line 100 | void MuonIDMod::Process()
100            eta = TMath::Abs(mu->Eta());
101          }
102          break;
103 +      case kGlobalTracker:
104 +        pass = (mu->HasGlobalTrk() && mu->GlobalTrk()->Chi2()/mu->GlobalTrk()->Ndof() < 10 &&
105 +               (mu->NSegments() > 1 || mu->NMatches() > 1) && mu->NValidHits() > 0) ||
106 +               (mu->IsTrackerMuon() &&
107 +                mu->Quality().Quality(MuonQuality::TMLastStationTight));
108 +        if (pass) {
109 +          pt  = mu->TrackerTrk()->Pt();
110 +          eta = TMath::Abs(mu->TrackerTrk()->Eta());
111 +        }
112 +        else {
113 +          pt  = mu->Pt();
114 +          eta = TMath::Abs(mu->Eta());
115 +        }
116 +        break;
117        case kSta:
118          pass = mu->HasStandaloneTrk();
119          if (pass) {
# Line 180 | Line 196 | void MuonIDMod::Process()
196                   RChi2 < 10.0 &&
197                   mu->Quality().Quality(MuonQuality::GlobalMuonPromptTight);
198          break;
199 <      case kWWMuId:
199 >      case kWWMuIdV1:
200          idpass = mu->BestTrk() != 0 &&
201                   mu->BestTrk()->NHits() > 10 &&
202 +                 mu->BestTrk()->NPixelHits() > 0 &&
203 +                 mu->BestTrk()->PtErr()/mu->BestTrk()->Pt() < 0.1 &&
204                   RChi2 < 10.0 &&
205                  (mu->NSegments() > 1 || mu->NMatches() > 1) &&
206 +                 mu->Quality().Quality(MuonQuality::GlobalMuonPromptTight);
207 +        break;
208 +      case kWWMuIdV2:
209 +        idpass = mu->BestTrk() != 0 &&
210 +                 mu->BestTrk()->NHits() > 10 &&
211                   mu->BestTrk()->NPixelHits() > 0 &&
189                 mu->Quality().Quality(MuonQuality::GlobalMuonPromptTight) &&
212                   mu->BestTrk()->PtErr()/mu->BestTrk()->Pt() < 0.1;
213          break;
214 +
215        case kNoId:
216          idpass = kTRUE;
217          break;
# Line 213 | Line 236 | void MuonIDMod::Process()
236        case kTrackCaloSliding:
237          {
238            const PileupEnergyDensity *rho =  fPileupEnergyDensity->At(0);
239 <          Double_t totalIso =  mu->IsoR03SumPt() + TMath::Max(mu->IsoR03EmEt() + mu->IsoR03HadEt() - rho->Rho() * TMath::Pi() * 0.3 * 0.3, 0.0);
239 >          Double_t totalIso =  mu->IsoR03SumPt() + mu->IsoR03EmEt() + mu->IsoR03HadEt() - rho->Rho() * TMath::Pi() * 0.3 * 0.3 ;
240            // trick to change the signal region cut
241            double theIsoCut = fCombIsolationCut;
242            if(theIsoCut < 0.20){
# Line 237 | Line 260 | void MuonIDMod::Process()
260            if (totalIso < (mu->Pt()*theIsoCut)) isocut = kTRUE;
261          }
262          break;
263 +      case kCombinedRelativeConeAreaCorrected:
264 +        {
265 +          const PileupEnergyDensity *rho =  fPileupEnergyDensity->At(0);
266 +          Double_t totalIso =  mu->IsoR03SumPt() + mu->IsoR03EmEt() + mu->IsoR03HadEt() - rho->Rho() * TMath::Pi() * 0.3 * 0.3 ;
267 +          double theIsoCut = fCombRelativeIsolationCut;
268 +          if (totalIso < (mu->Pt()*theIsoCut)) isocut = kTRUE;
269 +        }
270 +        break;          
271        case kPFIso:
272 <        {
273 <          Double_t beta = IsolationTools::BetaM(fTracks, mu, fVertices->At(0), 0.0, 0.2, 0.3, 0.02);
274 <          if(beta == 0) beta = 1.0;
275 <          Double_t totalIso =  IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), 0.2, 0.5, 0.3, 0.02, 0, beta, fNonIsolatedMuons, fNonIsolatedElectrons);
276 <          if (totalIso < (mu->Pt()*fCombIsolationCut) )
272 >      {
273 >          Double_t pfIsoCutValue = 9999;
274 >          if(fPFIsolationCut > 0){
275 >            pfIsoCutValue = fPFIsolationCut;
276 >          } else {
277 >            if (mu->AbsEta() < 1.479) {
278 >              if (mu->Pt() > 20) {
279 >                pfIsoCutValue = 0.13;
280 >              } else {
281 >                pfIsoCutValue = 0.06;
282 >              }
283 >            } else {
284 >              if (mu->Pt() > 20) {
285 >                pfIsoCutValue = 0.09;
286 >              } else {
287 >                pfIsoCutValue = 0.05;
288 >              }
289 >            }
290 >          }
291 >          Double_t totalIso =  IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), 0.1, 1.0, 0.3, 0.0);
292 >          if (totalIso < (mu->Pt()*pfIsoCutValue) )
293              isocut = kTRUE;
294          }
295          break;
# Line 253 | Line 300 | void MuonIDMod::Process()
300  
301            Double_t beta = IsolationTools::BetaM(fTracks, mu, fVertices->At(0), 0.0, 0.2, 0.3, 0.02);
302            if(beta == 0) beta = 1.0;
303 <          Double_t totalIso =  IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), 0.2, 0.5, 0.3, 0.02, 3, beta, fNonIsolatedMuons, fNonIsolatedElectrons);
304 <          if (totalIso < (mu->Pt()*fCombIsolationCut) )
303 >          Double_t totalIso =  IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), fNonIsolatedMuons, fNonIsolatedElectrons, 0.2, 1.0, 0.4, 0.0, 3);
304 >          if (totalIso < (mu->Pt()*fPFIsolationCut) )
305              isocut = kTRUE;
306          }
307          break;
# Line 313 | Line 360 | void MuonIDMod::SlaveBegin()
360    ReqEventObject(fBeamSpotName, fBeamSpot, kTRUE);
361    ReqEventObject(fTrackName, fTracks, kTRUE);
362    ReqEventObject(fPFCandidatesName, fPFCandidates, kTRUE);
363 <  if (fMuonIsoType.CompareTo("TrackCaloSliding") == 0) {
363 >  if (fMuonIsoType.CompareTo("TrackCaloSliding") == 0
364 >      || fMuonIsoType.CompareTo("CombinedRelativeConeAreaCorrected") == 0) {
365      ReqEventObject(fPileupEnergyDensityName, fPileupEnergyDensity, kTRUE);
366    }
367  
# Line 325 | Line 373 | void MuonIDMod::SlaveBegin()
373      fMuIDType = kTight;
374    else if (fMuonIDType.CompareTo("Loose") == 0)
375      fMuIDType = kLoose;
376 <  else if (fMuonIDType.CompareTo("WWMuId") == 0)
377 <    fMuIDType = kWWMuId;
376 >  else if (fMuonIDType.CompareTo("WWMuIdV1") == 0)
377 >    fMuIDType = kWWMuIdV1;
378 >  else if (fMuonIDType.CompareTo("WWMuIdV2") == 0)
379 >    fMuIDType = kWWMuIdV2;
380    else if (fMuonIDType.CompareTo("NoId") == 0)
381      fMuIDType = kNoId;
382    else if (fMuonIDType.CompareTo("Custom") == 0) {
# Line 348 | Line 398 | void MuonIDMod::SlaveBegin()
398      fMuIsoType = kTrackCaloSliding;
399    else if (fMuonIsoType.CompareTo("TrackCaloSlidingNoCorrection") == 0)
400      fMuIsoType = kTrackCaloSlidingNoCorrection;
401 +  else if (fMuonIsoType.CompareTo("CombinedRelativeConeAreaCorrected") == 0)
402 +    fMuIsoType = kCombinedRelativeConeAreaCorrected;
403    else if (fMuonIsoType.CompareTo("PFIso") == 0)
404      fMuIsoType = kPFIso;
405    else if (fMuonIsoType.CompareTo("PFIsoNoL") == 0)
# Line 369 | Line 421 | void MuonIDMod::SlaveBegin()
421      fMuClassType = kAll;
422    else if (fMuonClassType.CompareTo("Global") == 0)
423      fMuClassType = kGlobal;
424 +  else if (fMuonClassType.CompareTo("GlobalTracker") == 0)
425 +    fMuClassType = kGlobalTracker;
426    else if (fMuonClassType.CompareTo("Standalone") == 0)
427      fMuClassType = kSta;
428    else if (fMuonClassType.CompareTo("TrackerMuon") == 0)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines