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.51 by ceballos, Mon May 16 18:21:42 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"),
26 <  fMuonIsoType("TrackCaloSliding"),
26 >  fMuonIsoType("PFIso"),
27    fMuonClassType("Global"),  
28    fTrackIsolationCut(3.0),
29    fCaloIsolationCut(3.0),
30 <  fCombIsolationCut(0.15),
30 >  fCombIsolationCut(-1.0),
31    fMuonPtMin(10),
32    fApplyD0Cut(kTRUE),
33 +  fApplyDZCut(kTRUE),
34    fD0Cut(0.020),
35 +  fDZCut(0.10),
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:
241          {
242 <          Double_t beta = IsolationTools::BetaM(fTracks, mu, fVertices->At(0), 0.0, 0.2, 0.3, 0.02);
243 <          if(beta == 0) beta = 1.0;
244 <          Double_t totalIso =  IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), 0.2, 0.5, 0.3, 0.02, 0, beta, fNonIsolatedMuons, fNonIsolatedElectrons);
245 <          if (totalIso < (mu->Pt()*fCombIsolationCut) )
242 >          Double_t pfIsoCutValue = 9999;
243 >          if(fCombIsolationCut > 0){
244 >            pfIsoCutValue = fCombIsolationCut;
245 >          } else {
246 >            if (mu->AbsEta() < 1.479) {
247 >              if (mu->Pt() > 20) {
248 >                pfIsoCutValue = 0.22;
249 >              } else {
250 >                pfIsoCutValue = 0.11;
251 >              }
252 >            } else {
253 >              if (mu->Pt() > 20) {
254 >                pfIsoCutValue = 0.20;
255 >              } else {
256 >                pfIsoCutValue = 0.11;
257 >              }
258 >            }
259 >          }
260 >          Double_t totalIso =  IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), 0.1, 1.0, 0.4, 0.0);
261 >          if (totalIso < (mu->Pt()*pfIsoCutValue) )
262              isocut = kTRUE;
263          }
264          break;
# Line 247 | Line 269 | void MuonIDMod::Process()
269  
270            Double_t beta = IsolationTools::BetaM(fTracks, mu, fVertices->At(0), 0.0, 0.2, 0.3, 0.02);
271            if(beta == 0) beta = 1.0;
272 <          Double_t totalIso =  IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), 0.2, 0.5, 0.3, 0.02, 3, beta, fNonIsolatedMuons, fNonIsolatedElectrons);
272 >          Double_t totalIso =  IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), fNonIsolatedMuons, fNonIsolatedElectrons, 0.2, 1.0, 0.4, 0.0, 3);
273            if (totalIso < (mu->Pt()*fCombIsolationCut) )
274              isocut = kTRUE;
275          }
# Line 263 | Line 285 | void MuonIDMod::Process()
285      if (isocut == kFALSE)
286        continue;
287  
288 +    // apply d0 cut
289      if (fApplyD0Cut) {
290 <      Bool_t passD0cut = MuonTools::PassD0Cut(mu, fVertices, fD0Cut);
290 >      Bool_t passD0cut = kTRUE;
291 >      if(fD0Cut < 0.05) { // trick to change the signal region cut
292 >        if      (mu->Pt() >  20.0) fD0Cut = 0.02;
293 >        else if (mu->Pt() <= 20.0) fD0Cut = 0.01;
294 >      }
295 >      if(fWhichVertex >= -1) passD0cut = MuonTools::PassD0Cut(mu, fVertices, fD0Cut, fWhichVertex);
296 >      else                   passD0cut = MuonTools::PassD0Cut(mu, fBeamSpot, fD0Cut);
297        if (!passD0cut)
298          continue;
299      }
300  
301 +    // apply dz cut
302 +    if (fApplyDZCut) {
303 +      Bool_t passDZcut = MuonTools::PassDZCut(mu, fVertices, fDZCut, fWhichVertex);
304 +      if (!passDZcut)
305 +        continue;
306 +    }
307 +
308      // add good muon
309      CleanMuons->Add(mu);
310    }
# Line 290 | Line 326 | void MuonIDMod::SlaveBegin()
326    if (fMuonIsoType.CompareTo("PFIsoNoL") != 0) {
327      ReqEventObject(fMuonBranchName, fMuons, kTRUE);
328    }
329 +  ReqEventObject(fBeamSpotName, fBeamSpot, kTRUE);
330    ReqEventObject(fTrackName, fTracks, kTRUE);
331    ReqEventObject(fPFCandidatesName, fPFCandidates, kTRUE);
332    if (fMuonIsoType.CompareTo("TrackCaloSliding") == 0) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines