[Rivet-svn] r2240 - trunk/src/Analyses

blackhole at projects.hepforge.org blackhole at projects.hepforge.org
Wed Feb 3 18:18:56 GMT 2010


Author: holsch
Date: Wed Feb  3 18:18:56 2010
New Revision: 2240

Log:
Iterate over charged particles of the lossy final state directly instead of iterating over jets and the particles they are made of. This is to fix the discrepancy observed in the dN vs. dDeltaPhi plots. A low statistics example can be found here: http://users.hepforge.org/~holsch/Rivet/CDF_2001_S4751469_d01-x01-y01.pdf

Modified:
   trunk/src/Analyses/CDF_2001_S4751469.cc

Modified: trunk/src/Analyses/CDF_2001_S4751469.cc
==============================================================================
--- trunk/src/Analyses/CDF_2001_S4751469.cc	Wed Feb  3 16:22:54 2010	(r2239)
+++ trunk/src/Analyses/CDF_2001_S4751469.cc	Wed Feb  3 18:18:56 2010	(r2240)
@@ -89,6 +89,9 @@
    
       // Analyse, with pT > 0.5 GeV AND |eta| < 1
       const JetAlg& tj = applyProjection<JetAlg>(event, "TrackJet");
+
+      // Final state (lossy) charged particles
+      const LossyFinalState& fs = applyProjection<LossyFinalState>(event, "FS");
    
       // Get jets, sorted by pT
       const Jets jets = tj.jetsByPt();
@@ -128,55 +131,50 @@
       LWH::Profile1D hist_pt_dphi_2(50, 0, 180), hist_pt_dphi_5(50, 0, 180), hist_pt_dphi_30(50, 0, 180);
 
       /// @todo Why not just run over charged particles directly?
-      foreach (const Jet& j, jets) {
-        foreach (const FourMomentum& p, j) {
-          // Calculate Delta(phi) from leading jet
-          const double dPhi = deltaPhi(p.azimuthalAngle(), phiLead);
-       
-          // Get pT sum and multiplicity values for each region
-          // (each is 1 number for each region per event)
-          /// @todo Include event weight factor?
-          if (dPhi < PI/3.0) {
-            ptSumToward += p.pT();
-            ++numToward;
-          }
-          else if (dPhi < 2*PI/3.0) {
-            ptSumTrans += p.pT();
-            ++numTrans;
-            // Fill transverse pT distributions
-            if (ptLead/GeV > 2.0) {
-              _ptTrans2->fill(p.pT()/GeV, weight);
-              _totalNumTrans2 += weight;
-            }
-            if (ptLead/GeV > 5.0) {
-              _ptTrans5->fill(p.pT()/GeV, weight);
-              _totalNumTrans5 += weight;
-            }
-            if (ptLead/GeV > 30.0) {
-              _ptTrans30->fill(p.pT()/GeV, weight);
-              _totalNumTrans30 += weight;
-            }
-          }
-          else {
-            ptSumAway += p.pT();
-            ++numAway;
-          }
-       
-          // Fill tmp histos to bin event's track Nch & pT in dphi
-          const double dPhideg = 180*dPhi/PI;
+      foreach (const Particle& p, fs.particles()) {
+        // Calculate DeltaPhi(p,leadingJet)
+        const double dPhi = deltaPhi(p.momentum().azimuthalAngle(), phiLead);
+        const double pT = p.momentum().pT();
+        
+        if (dPhi < PI/3.0) {
+          ptSumToward += pT;
+          ++numToward;
+        }
+        else if (dPhi < 2*PI/3.0) {
+          ptSumTrans += pT;
+          ++numTrans;
+          // Fill transverse pT distributions
           if (ptLead/GeV > 2.0) {
-            hist_num_dphi_2.fill(dPhideg, 1);
-            hist_pt_dphi_2.fill (dPhideg, p.pT()/GeV);
+            _ptTrans2->fill(pT/GeV, weight);
+            _totalNumTrans2 += weight;
           }
           if (ptLead/GeV > 5.0) {
-            hist_num_dphi_5.fill(dPhideg, 1);
-            hist_pt_dphi_5.fill (dPhideg, p.pT()/GeV);
+            _ptTrans5->fill(pT/GeV, weight);
+            _totalNumTrans5 += weight;
           }
           if (ptLead/GeV > 30.0) {
-            hist_num_dphi_30.fill(dPhideg, 1);
-            hist_pt_dphi_30.fill (dPhideg, p.pT()/GeV);
+            _ptTrans30->fill(pT/GeV, weight);
+            _totalNumTrans30 += weight;
           }
-
+        }
+        else {
+          ptSumAway += pT;
+          ++numAway;
+        }
+     
+        // Fill tmp histos to bin event's track Nch & pT in dphi
+        const double dPhideg = 180*dPhi/PI;
+        if (ptLead/GeV > 2.0) {
+          hist_num_dphi_2.fill(dPhideg, 1);
+          hist_pt_dphi_2.fill (dPhideg, pT/GeV);
+        }
+        if (ptLead/GeV > 5.0) {
+          hist_num_dphi_5.fill(dPhideg, 1);
+          hist_pt_dphi_5.fill (dPhideg, pT/GeV);
+        }
+        if (ptLead/GeV > 30.0) {
+          hist_num_dphi_30.fill(dPhideg, 1);
+          hist_pt_dphi_30.fill (dPhideg, pT/GeV);
         }
       }
 


More information about the Rivet-svn mailing list