Print

Print


Commit in lcsim/src/org/lcsim/contrib/uiowa on MAIN
MassAnalysis.java+59-571.2 -> 1.3
MJC: Added some more plots and debug

lcsim/src/org/lcsim/contrib/uiowa
MassAnalysis.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- MassAnalysis.java	10 Apr 2007 20:43:08 -0000	1.2
+++ MassAnalysis.java	23 Apr 2007 21:33:38 -0000	1.3
@@ -5,6 +5,8 @@
 import hep.physics.vec.*;
 import hep.physics.jet.*;
 import hep.aida.*;
+
+import org.lcsim.event.EventHeader.LCMetaData;
   
 import org.lcsim.util.*;
 import org.lcsim.util.decision.*;
@@ -56,14 +58,20 @@
     ICloud1D m_h1resAdHoc;
     ICloud1D m_h2resAdHoc;
     ICloud1D m_h3resAdHoc;
+    ICloud1D m_h1resNoMerge;
+    ICloud1D m_h2resNoMerge;
+    ICloud1D m_h3resNoMerge;
     ICloud1D m_h1trueRes;
     ICloud1D m_h1trueResAdHoc;
+    ICloud1D m_h1trueResNoMerge;
     ICloud1D m_h1PassingCut;
     ICloud1D m_h1trueResPassingCut;
     ICloud1D m_h1trueResPassingCutAdHoc;
+    ICloud1D m_h1trueResPassingCutNoMerge;
     ICloud1D m_h1PassingCut2;
     ICloud1D m_h1trueResPassingCut2;
     ICloud1D m_h1trueResPassingCut2AdHoc;
+    ICloud1D m_h1trueResPassingCut2NoMerge;
 
     public MassAnalysis() {
 	// PFA
@@ -83,6 +91,11 @@
 	jNonTrivialAdHoc.setOutputCollectionName("jetOutputAdHoc");
 	jNonTrivialAdHoc.setFinder(twojet);
 	add(jNonTrivialAdHoc);
+	JetDriver jNonTrivialNoMerge = new JetDriver();
+	jNonTrivialNoMerge.setInputCollectionName("all particles [no frag merge] (ron calib)");
+	jNonTrivialNoMerge.setOutputCollectionName("jetOutputNoMerge");
+	jNonTrivialNoMerge.setFinder(twojet);
+	add(jNonTrivialNoMerge);
 	JetDriver jTrivial = new JetDriver();
 	jTrivial.setInputCollectionName("perfect particles");
 	jTrivial.setOutputCollectionName("jetOutputTrivial");
@@ -105,17 +118,23 @@
 	    m_h1resAdHoc = m_histoFactory.createCloud1D("eventMassResidualsAdHoc");
 	    m_h2resAdHoc = m_histoFactory.createCloud1D("eventEnergyResidualsAdHoc");
 	    m_h3resAdHoc = m_histoFactory.createCloud1D("eventMomentumResidualsAdHoc");
+	    m_h1resNoMerge = m_histoFactory.createCloud1D("eventMassResidualsNoMerge");
+	    m_h2resNoMerge = m_histoFactory.createCloud1D("eventEnergyResidualsNoMerge");
+	    m_h3resNoMerge = m_histoFactory.createCloud1D("eventMomentumResidualsNoMerge");
 	    m_h1perf = m_histoFactory.createCloud1D("eventMassPerfect");
 	    m_h2perf = m_histoFactory.createCloud1D("eventEnergyPerfect");
 	    m_h3perf = m_histoFactory.createCloud1D("eventMomentumPerfect");
 	    m_h1trueRes = m_histoFactory.createCloud1D("eventMassResidualsToTruth");
 	    m_h1trueResAdHoc = m_histoFactory.createCloud1D("eventMassResidualsToTruthAdHoc");
+	    m_h1trueResNoMerge = m_histoFactory.createCloud1D("eventMassResidualsToTruthNoMerge");
 	    m_h1PassingCut = m_histoFactory.createCloud1D("eventMassInBarrel");
 	    m_h1trueResPassingCut = m_histoFactory.createCloud1D("eventMassResidualsToTruthInBarrel");
 	    m_h1trueResPassingCutAdHoc = m_histoFactory.createCloud1D("eventMassResidualsToTruthInBarrelAdHoc");
+	    m_h1trueResPassingCutNoMerge = m_histoFactory.createCloud1D("eventMassResidualsToTruthInBarrelNoMerge");
 	    m_h1PassingCut2 = m_histoFactory.createCloud1D("eventMassInBarrel2");
 	    m_h1trueResPassingCut2 = m_histoFactory.createCloud1D("eventMassResidualsToTruthInBarrel2");
 	    m_h1trueResPassingCut2AdHoc = m_histoFactory.createCloud1D("eventMassResidualsToTruthInBarrel2AdHoc");
+	    m_h1trueResPassingCut2NoMerge = m_histoFactory.createCloud1D("eventMassResidualsToTruthInBarrel2NoMerge");
 	} catch (IOException ioe1) {
             ioe1.printStackTrace(); 
 	}
@@ -126,6 +145,15 @@
     {
 	super.process(event);
 
+	{
+	    org.lcsim.util.event.BaseLCSimEvent tmpEvent = (org.lcsim.util.event.BaseLCSimEvent)(event);
+	    java.util.Collection<LCMetaData> metaData = tmpEvent.MatGetMetaData();
+	    for (LCMetaData meta : metaData) {
+		System.out.println("DEBUG: Event contains list '"+meta.getName()+"' of type "+meta.getType());
+	    }
+	}
+
+
 	// Event cut: Both reconstructed jets have cos(theta) < 0.8
 	// Event cut 2: Both quarks have cos(theta) < 0.8
 	boolean passesTruthAcceptanceCut = false;
@@ -173,86 +201,41 @@
 	    }
 	}
 
-	// DEBUG: Cross-check event energy sum
-	if (false) {
-	    List<ReconstructedParticle>recoParticles = event.get(ReconstructedParticle.class,"all particles (ron calib)");
-	    List<ReconstructedParticle>recoParticlesAdHoc = event.get(ReconstructedParticle.class,"all particles");
-	    List<ReconstructedParticle>perfParticles = event.get(ReconstructedParticle.class,"perfect particles");
-	    double recoSum = 0.0;
-	    double recoSumAdHoc = 0.0;
-	    double perfSum = 0.0;
-	    Hep3Vector perfSumVec = new BasicHep3Vector();
-	    Hep3Vector recoSumVec = new BasicHep3Vector();
-	    for (ReconstructedParticle part : recoParticles) { 
-		recoSum += part.getEnergy(); 
-		recoSumVec = VecOp.add(recoSumVec, part.getMomentum());
-		// Debug
-		double partEnergy = part.getEnergy();
-		Hep3Vector partMomVec = part.getMomentum();
-		double partMomMag = partMomVec.magnitude();
-		double partMass = Math.sqrt(partEnergy*partEnergy - partMomMag*partMomMag);
-		System.out.println("DEBUG/RECO: Particle has Q="+part.getCharge()+", E="+partEnergy+", p="+partMomMag+" => m="+partMass+". SumE="+recoSum+", sumP="+recoSumVec.magnitude());
-
-	    }
-	    for (ReconstructedParticle part : recoParticlesAdHoc) { recoSumAdHoc += part.getEnergy(); }
-	    for (ReconstructedParticle part : perfParticles) { 
-		perfSum += part.getEnergy(); 
-		perfSumVec = VecOp.add(perfSumVec, part.getMomentum());
-		// Debug
-		double partEnergy = part.getEnergy();
-		Hep3Vector partMomVec = part.getMomentum();
-		double partMomMag = partMomVec.magnitude();
-		double partMass = Math.sqrt(partEnergy*partEnergy - partMomMag*partMomMag);
-		System.out.println("DEBUG/PERFECT: Particle has Q="+part.getCharge()+", E="+partEnergy+", p="+partMomMag+" => m="+partMass+". SumE="+perfSum+", sumP="+perfSumVec.magnitude());
-	    }
-	}
-	// DEBUG: Check just photons:
-	if (false) {
-	    List<ReconstructedParticle>recoParticles = event.get(ReconstructedParticle.class,"large photon particles");
-	    for (ReconstructedParticle part : recoParticles) { 
-		System.out.println("DEBUG/RECO: large photon particles: Particle has Q="+part.getCharge()+", E="+part.getEnergy()+", p="+part.getMomentum().magnitude());
-	    }
-	    recoParticles = event.get(ReconstructedParticle.class,"small photons (ron calib)");
-	    for (ReconstructedParticle part : recoParticles) { 
-		System.out.println("DEBUG/RECO: small photons: Particle has Q="+part.getCharge()+", E="+part.getEnergy()+", p="+part.getMomentum().magnitude());
-	    }
-	    recoParticles = event.get(ReconstructedParticle.class,"neutral hadron particles (ron calib)");
-	    for (ReconstructedParticle part : recoParticles) { 
-		System.out.println("DEBUG/RECO: neutral hadron particles (ron calib): Particle has Q="+part.getCharge()+", E="+part.getEnergy()+", p="+part.getMomentum().magnitude());
-	    }
-	    recoParticles = event.get(ReconstructedParticle.class,"charged hadron particles 2");
-	    for (ReconstructedParticle part : recoParticles) { 
-		System.out.println("DEBUG/RECO: charged particles: Particle has Q="+part.getCharge()+", E="+part.getEnergy()+", p="+part.getMomentum().magnitude());
-	    }
-	}
-
-
 	List<ReconstructedParticle>jets = event.get(ReconstructedParticle.class,"jetOutput");
 	List<ReconstructedParticle>jetsAdHoc = event.get(ReconstructedParticle.class,"jetOutputAdHoc");
+	List<ReconstructedParticle>jetsNoMerge = event.get(ReconstructedParticle.class,"jetOutputNoMerge");
 	List<ReconstructedParticle>jetsPerfect = event.get(ReconstructedParticle.class,"jetOutputTrivial");
 	double esum = 0.;
 	double esumAdHoc = 0.;
+	double esumNoMerge = 0.;
 	double esumPerfect = 0.;
 	double pxsum = 0.;
 	double pxsumAdHoc = 0.;
+	double pxsumNoMerge = 0.;
 	double pxsumPerfect = 0.;
 	double pysum = 0.;
 	double pysumAdHoc = 0.;
+	double pysumNoMerge = 0.;
 	double pysumPerfect = 0.;
 	double pzsum = 0.;
 	double pzsumAdHoc = 0.;
+	double pzsumNoMerge = 0.;
 	double pzsumPerfect = 0.;
 	double chargesum = 0.;
 	double chargesumAdHoc = 0.;
+	double chargesumNoMerge = 0.;
 	double chargesumPerfect = 0.;
 	double[] je = new double[jets.size()];
 	double[] jeAdHoc = new double[jets.size()];
+	double[] jeNoMerge = new double[jets.size()];
 	double[] jePerfect = new double[jets.size()];
 	Hep3Vector[] jp = new Hep3Vector[jets.size()];
 	Hep3Vector[] jpAdHoc = new Hep3Vector[jets.size()];
+	Hep3Vector[] jpNoMerge = new Hep3Vector[jets.size()];
 	Hep3Vector[] jpPerfect = new Hep3Vector[jets.size()];
 	int ind = 0;
 	int indAdHoc = 0;
+	int indNoMerge = 0;
 	int indPerfect = 0;
 
 	// Loop over jets
@@ -278,6 +261,17 @@
 	    chargesumAdHoc += jet.getCharge();
 	    indAdHoc++;
 	}
+	for(ReconstructedParticle jet:jetsNoMerge) {
+	    esumNoMerge += jet.getEnergy();
+	    jeNoMerge[indNoMerge] = jet.getEnergy();
+	    Hep3Vector v = jet.getMomentum();
+	    jpNoMerge[indNoMerge] = v;
+	    pxsumNoMerge += v.x();
+	    pysumNoMerge += v.y();
+	    pzsumNoMerge += v.z();
+	    chargesumNoMerge += jet.getCharge();
+	    indNoMerge++;
+	}
 	for(ReconstructedParticle jet:jetsPerfect) {
 	    esumPerfect += jet.getEnergy();
 	    jePerfect[indPerfect] = jet.getEnergy();
@@ -293,13 +287,15 @@
 	// Compute total momentum and hence event mass
 	double psum = Math.sqrt(pxsum*pxsum+pysum*pysum+pzsum*pzsum);
 	double psumAdHoc = Math.sqrt(pxsumAdHoc*pxsumAdHoc+pysumAdHoc*pysumAdHoc+pzsumAdHoc*pzsumAdHoc);
+	double psumNoMerge = Math.sqrt(pxsumNoMerge*pxsumNoMerge+pysumNoMerge*pysumNoMerge+pzsumNoMerge*pzsumNoMerge);
 	double psumPerfect = Math.sqrt(pxsumPerfect*pxsumPerfect+pysumPerfect*pysumPerfect+pzsumPerfect*pzsumPerfect);
 	double evtmass = Math.sqrt(esum*esum - psum*psum);
 	double evtmassAdHoc = Math.sqrt(esumAdHoc*esumAdHoc - psumAdHoc*psumAdHoc);
+	double evtmassNoMerge = Math.sqrt(esumNoMerge*esumNoMerge - psumNoMerge*psumNoMerge);
 	double evtmassPerfect = Math.sqrt(esumPerfect*esumPerfect - psumPerfect*psumPerfect);
-	System.out.println("DEBUG: Energy sum = "+esum+" (reco-ron), "+esumAdHoc+" (reco-AH), "+esumPerfect+" (perf)");
-	System.out.println("DEBUG: Momentum sum = "+psum+" (reco-ron), "+psumAdHoc+" (reco-AH), "+psumPerfect+" (perf)");
-	System.out.println("DEBUG:   => mass = "+evtmass+" (reco-ron), "+evtmassAdHoc+" (reco-AH), "+evtmassPerfect+" (perf)");
+	System.out.println("DEBUG: Energy sum = "+esum+" (reco-ron), "+esumAdHoc+" (reco-AH), "+esumPerfect+" (perf), "+esumNoMerge+" (reco-ron,nomerge)");
+	System.out.println("DEBUG: Momentum sum = "+psum+" (reco-ron), "+psumAdHoc+" (reco-AH), "+psumPerfect+" (perf), "+psumNoMerge+" (reco-ron,nomerge)");
+	System.out.println("DEBUG:   => mass = "+evtmass+" (reco-ron), "+evtmassAdHoc+" (reco-AH), "+evtmassPerfect+" (perf), "+evtmassNoMerge+" (reco-ron,nomerge)");
 	if (partZToqq != null) {
 	    System.out.println("  => Event residuals: mass = "+(evtmass-evtmassPerfect)+", event energy = "+(esum-esumPerfect)+", mom = "+(psum-psumPerfect)+", mass-truth="+(evtmass-partZToqq.getMass()));
 	} else {
@@ -315,12 +311,16 @@
 	m_h1resAdHoc.fill(evtmassAdHoc-evtmassPerfect);
 	m_h2resAdHoc.fill(esumAdHoc-esumPerfect);
 	m_h3resAdHoc.fill(psumAdHoc-psumPerfect);
+	m_h1resNoMerge.fill(evtmassNoMerge-evtmassPerfect);
+	m_h2resNoMerge.fill(esumNoMerge-esumPerfect);
+	m_h3resNoMerge.fill(psumNoMerge-psumPerfect);
 	m_h1perf.fill(evtmassPerfect);
 	m_h2perf.fill(esumPerfect);
 	m_h3perf.fill(psumPerfect);
 	if (partZToqq != null) {
 	    m_h1trueRes.fill(evtmass-partZToqq.getMass());
 	    m_h1trueResAdHoc.fill(evtmassAdHoc-partZToqq.getMass());
+	    m_h1trueResNoMerge.fill(evtmassNoMerge-partZToqq.getMass());
 	}
 
 	// Look at individual jets
@@ -339,6 +339,7 @@
 		    if (partZToqq != null) {
 			m_h1trueResPassingCut.fill(evtmass-partZToqq.getMass());
 			m_h1trueResPassingCutAdHoc.fill(evtmassAdHoc-partZToqq.getMass());
+			m_h1trueResPassingCutNoMerge.fill(evtmassNoMerge-partZToqq.getMass());
 		    }
 		}
 	    }
@@ -349,6 +350,7 @@
 	    m_h1PassingCut2.fill(evtmass);
 	    m_h1trueResPassingCut2.fill(evtmass-partZToqq.getMass());
 	    m_h1trueResPassingCut2AdHoc.fill(evtmassAdHoc-partZToqq.getMass());
+	    m_h1trueResPassingCut2NoMerge.fill(evtmassNoMerge-partZToqq.getMass());
 	}
 
 	m_eventCount++;
CVSspam 0.2.8