Print

Print


Commit in lcsim/src/org/lcsim/contrib/Barklow on MAIN
HighPElectronID.java+171-1701.1 -> 1.2
 electron id for high momentum electrons  

lcsim/src/org/lcsim/contrib/Barklow
HighPElectronID.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- HighPElectronID.java	26 Nov 2008 12:35:40 -0000	1.1
+++ HighPElectronID.java	26 Nov 2008 12:53:46 -0000	1.2
@@ -1,170 +1,171 @@
-import hep.physics.particle.properties.ParticlePropertyManager;
-import hep.physics.particle.properties.ParticlePropertyProvider;
-import hep.physics.vec.BasicHep3Vector;
-import hep.physics.vec.BasicHepLorentzVector;
-import hep.physics.vec.Hep3Vector;
-import java.util.Map;
-import java.util.HashMap;
-import java.io.IOException;
-import java.util.List;
-import java.util.ArrayList;
-import org.lcsim.geometry.Detector;
-import org.lcsim.geometry.compact.Subdetector;
-import org.lcsim.geometry.subdetector.CylindricalCalorimeter;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.Track;
-import org.lcsim.event.Cluster;
-import org.lcsim.event.ReconstructedParticle;
-import org.lcsim.event.base.BaseReconstructedParticle;
-import org.lcsim.event.base.BaseParticleID;
-import org.lcsim.util.Driver;
-import org.lcsim.util.loop.LCIODriver;
-import org.lcsim.util.swim.HelixSwimmer;
-import static java.lang.Math.abs;
-import static java.lang.Math.sqrt;
-import static java.lang.Math.acos;
-import static java.lang.Math.pow;
-/*
- * Post-PFA identification of high momentum electrons
- * Track and cluster for electron candidates zre stored in Map<Track,Cluster> electronTrackClusterMap
- * (one track and one cluster per electron)
- * Rebuilds ReconstructedParticle collection if modifyRP = true.
- * 
- */
-public class HighPElectronID extends Driver
-{
-    final int nEventSkip=0;
-    final double trackMomMagMin=15.;
-    final double cosangMaxMin=0.99998;
-    final double mElectron;
-    boolean modifyRP = true;
-    int ncnt=0;
-    int ncnt_in=0;
-    int eventNumber;
-    Hep3Vector nucr=new BasicHep3Vector(0,0,0);
-    double m_ECAL_barrel_r;
-    double m_ECAL_endcap_z;
-    final ParticlePropertyProvider dPPP;
-    Map<Track,Cluster> electronTrackClusterMap;
-    public HighPElectronID() throws IOException
-    {
-	if(modifyRP) {
-	    LCIODriver writer = new LCIODriver("after_electronID.slcio");
-	    add(writer);
-	}
-	dPPP = ParticlePropertyManager.getParticlePropertyProvider();
-	mElectron = dPPP.get(11).getMass();
-	System.out.println(" HighPElectronID constructor   mElectron= "+mElectron);
-    }
-    protected void process(EventHeader event)
-    {
-	ncnt_in++;
-	if (ncnt_in <= nEventSkip) {
-	    throw new Driver.NextEventException();
-	}
-	else {
-	    eventNumber=event.getEventNumber();
-	    ncnt++;
-	    if(ncnt_in%100 == 1) System.out.println(" ncnt_in= "+ncnt_in+" ncnt= "+ncnt+" eventNumber= "+eventNumber);
-	    List<Track> tracks = event.get(Track.class,"Tracks");
-	    List<Cluster> clusters = new ArrayList<Cluster>(event.get(Cluster.class,"Clusters"));
-	    Detector thisDetector = event.getDetector();
-	    double thisBfield=thisDetector.getFieldMap().getField(new BasicHep3Vector(0,0,0)).magnitude();
-	    CylindricalCalorimeter emb = ((CylindricalCalorimeter) thisDetector.getSubdetectors().get("EMBarrel"));
-	    CylindricalCalorimeter eme = ((CylindricalCalorimeter) thisDetector.getSubdetectors().get("EMEndcap"));
-	    m_ECAL_barrel_r = emb.getLayering().getDistanceToLayerSensorMid(0);
-	    m_ECAL_endcap_z = eme.getLayering().getDistanceToLayerSensorMid(0);
-	    HelixSwimmer helixswim=new HelixSwimmer(thisBfield);
-	    List<ReconstructedParticle> recoParticles = event.get(ReconstructedParticle.class,"ReconstructedParticles");
-	    electronTrackClusterMap = new HashMap<Track,Cluster>();
-	    for(Track track : tracks) {
-		Hep3Vector trackMom = new BasicHep3Vector(track.getMomentum());
-		double[] trackPar=track.getTrackParameters();
-		helixswim.setTrack(track);
-		double distecalbarr=helixswim.getDistanceToRadius(m_ECAL_barrel_r);
-		double distecalendcap=helixswim.getDistanceToZ(m_ECAL_endcap_z);
-		if(trackMom.magnitude() > trackMomMagMin && ((!Double.isNaN(distecalbarr)) || (!Double.isNaN(distecalendcap)))) {
-		    int nHitsElectron = 0;
-		    if((!Double.isNaN(distecalbarr)) && (Double.isNaN(distecalendcap))) {
-			nucr=helixswim.getPointAtLength(distecalbarr);
-		    }
-		    else if((Double.isNaN(distecalbarr)) && (!Double.isNaN(distecalendcap))) {
-			nucr=helixswim.getPointAtLength(distecalendcap);
-		    }
-		    else if(helixswim.getPointAtLength(distecalbarr).magnitude() < helixswim.getPointAtLength(distecalendcap).magnitude()) {
-			nucr=helixswim.getPointAtLength(distecalbarr);
-		    }
-		    else {
-			nucr=helixswim.getPointAtLength(distecalendcap);
-		    } 
-
-
-
-
-
-		    Hep3Vector normTrackMom=VecOp.mult(1./trackMom.magnitude(),trackMom);
-		    Hep3Vector normEcal=VecOp.mult(1./nucr.magnitude(),nucr);
-		    double cosangMax=-1000.;
-		    int iclus=0;
-		    Hep3Vector vecClus=new BasicHep3Vector(0,0,0);
-		    double emClusEOpt=0.;
-		    for (Cluster cluster : clusters) {
-			double[] subE = cluster.getSubdetectorEnergies();
-			double eSubTot = 0.;
-			for(int i=0;i<subE.length;i++) eSubTot += subE[i];
-			double emClusE = subE[2]+subE[6];
-			Hep3Vector vec1=new BasicHep3Vector(cluster.getPosition());
-			double cosang = VecOp.dot(normEcal,vec1)/vec1.magnitude();
-			double cosangTrackMom = VecOp.dot(normTrackMom,vec1)/vec1.magnitude();
-			if(cosang > cosangMax) {
-			    cosangMax=cosang;
-			    iclus=clusters.indexOf(cluster);
-			    vecClus=vec1;
-			    emClusEOpt=emClusE;
-			}
-		    }
-		    Cluster cluster = clusters.get(iclus);
-		    double[] clusShape = cluster.getShape();
-		    double[] subE = cluster.getSubdetectorEnergies();
-		    if(cosangMax > cosangMaxMin) {
-			if(abs((emClusEOpt-trackMom.magnitude())/trackMom.magnitude()) < 0.3) {
-			    if(clusShape[0]<300. && clusShape[1]<2000. && clusShape[2]<2000. ) {
-				
-				electronTrackClusterMap.put(track,cluster);
-				clusters.remove(cluster);
-			    }
-			}
-		    }
-		}
-	    }
-				
-	    if(modifyRP) {
-		for(Track track : electronTrackClusterMap.keySet()) {
-		    Hep3Vector trackMom = new BasicHep3Vector(track.getMomentum());
-		    Cluster cluster = electronTrackClusterMap.get(track);
-		    List<ReconstructedParticle> removeRP = new ArrayList<ReconstructedParticle>();
-		    for(ReconstructedParticle recoParticle : recoParticles) {
-			if(recoParticle.getTracks().indexOf(track) >= 0) {
-			    removeRP.add(recoParticle);
-			}
-			if(recoParticle.getClusters().indexOf(cluster) >= 0) {
-			    removeRP.add(recoParticle);
-			}
-		    }
-		    for(ReconstructedParticle recoParticle : removeRP) recoParticles.remove(recoParticle);
-		    BaseReconstructedParticle electronRP = new BaseReconstructedParticle(mElectron);
-		    electronRP.set4Vector(new BasicHepLorentzVector(sqrt(pow(mElectron,2)+trackMom.magnitudeSquared()),trackMom));
-		    electronRP.setCharge(track.getCharge());
-		    electronRP.setParticleIdUsed(new BaseParticleID(dPPP.get(-11*track.getCharge())));
-		    electronRP.setReferencePoint(new BasicHep3Vector(track.getReferencePoint()));
-		    electronRP.addTrack(track);
-		    electronRP.addCluster(cluster);
-		    recoParticles.add(electronRP);
-		}
-		super.process(event);
-	    }
-	}
-
-    }
-  
-}
+import hep.physics.particle.properties.ParticlePropertyManager;
+import hep.physics.particle.properties.ParticlePropertyProvider;
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.BasicHepLorentzVector;
+import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.VecOp;
+import java.util.Map;
+import java.util.HashMap;
+import java.io.IOException;
+import java.util.List;
+import java.util.ArrayList;
+import org.lcsim.geometry.Detector;
+import org.lcsim.geometry.compact.Subdetector;
+import org.lcsim.geometry.subdetector.CylindricalCalorimeter;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.Track;
+import org.lcsim.event.Cluster;
+import org.lcsim.event.ReconstructedParticle;
+import org.lcsim.event.base.BaseReconstructedParticle;
+import org.lcsim.event.base.BaseParticleID;
+import org.lcsim.util.Driver;
+import org.lcsim.util.loop.LCIODriver;
+import org.lcsim.util.swim.HelixSwimmer;
+import static java.lang.Math.abs;
+import static java.lang.Math.sqrt;
+import static java.lang.Math.acos;
+import static java.lang.Math.pow;
+/*
+ * Post-PFA identification of high momentum electrons
+ * Track and cluster for electron candidates zre stored in Map<Track,Cluster> electronTrackClusterMap
+ * (one track and one cluster per electron)
+ * Rebuilds ReconstructedParticle collection if modifyRP = true.
+ * 
+ */
+public class HighPElectronID extends Driver
+{
+    final int nEventSkip=0;
+    final double trackMomMagMin=15.;
+    final double cosangMaxMin=0.99998;
+    final double mElectron;
+    boolean modifyRP = true;
+    int ncnt=0;
+    int ncnt_in=0;
+    int eventNumber;
+    Hep3Vector nucr=new BasicHep3Vector(0,0,0);
+    double m_ECAL_barrel_r;
+    double m_ECAL_endcap_z;
+    final ParticlePropertyProvider dPPP;
+    Map<Track,Cluster> electronTrackClusterMap;
+    public HighPElectronID() throws IOException
+    {
+	if(modifyRP) {
+	    LCIODriver writer = new LCIODriver("after_electronID.slcio");
+	    add(writer);
+	}
+	dPPP = ParticlePropertyManager.getParticlePropertyProvider();
+	mElectron = dPPP.get(11).getMass();
+	System.out.println(" HighPElectronID constructor   mElectron= "+mElectron);
+    }
+    protected void process(EventHeader event)
+    {
+	ncnt_in++;
+	if (ncnt_in <= nEventSkip) {
+	    throw new Driver.NextEventException();
+	}
+	else {
+	    eventNumber=event.getEventNumber();
+	    ncnt++;
+	    if(ncnt_in%100 == 1) System.out.println(" ncnt_in= "+ncnt_in+" ncnt= "+ncnt+" eventNumber= "+eventNumber);
+	    List<Track> tracks = event.get(Track.class,"Tracks");
+	    List<Cluster> clusters = new ArrayList<Cluster>(event.get(Cluster.class,"Clusters"));
+	    Detector thisDetector = event.getDetector();
+	    double thisBfield=thisDetector.getFieldMap().getField(new BasicHep3Vector(0,0,0)).magnitude();
+	    CylindricalCalorimeter emb = ((CylindricalCalorimeter) thisDetector.getSubdetectors().get("EMBarrel"));
+	    CylindricalCalorimeter eme = ((CylindricalCalorimeter) thisDetector.getSubdetectors().get("EMEndcap"));
+	    m_ECAL_barrel_r = emb.getLayering().getDistanceToLayerSensorMid(0);
+	    m_ECAL_endcap_z = eme.getLayering().getDistanceToLayerSensorMid(0);
+	    HelixSwimmer helixswim=new HelixSwimmer(thisBfield);
+	    List<ReconstructedParticle> recoParticles = event.get(ReconstructedParticle.class,"ReconstructedParticles");
+	    electronTrackClusterMap = new HashMap<Track,Cluster>();
+	    for(Track track : tracks) {
+		Hep3Vector trackMom = new BasicHep3Vector(track.getMomentum());
+		double[] trackPar=track.getTrackParameters();
+		helixswim.setTrack(track);
+		double distecalbarr=helixswim.getDistanceToRadius(m_ECAL_barrel_r);
+		double distecalendcap=helixswim.getDistanceToZ(m_ECAL_endcap_z);
+		if(trackMom.magnitude() > trackMomMagMin && ((!Double.isNaN(distecalbarr)) || (!Double.isNaN(distecalendcap)))) {
+		    int nHitsElectron = 0;
+		    if((!Double.isNaN(distecalbarr)) && (Double.isNaN(distecalendcap))) {
+			nucr=helixswim.getPointAtLength(distecalbarr);
+		    }
+		    else if((Double.isNaN(distecalbarr)) && (!Double.isNaN(distecalendcap))) {
+			nucr=helixswim.getPointAtLength(distecalendcap);
+		    }
+		    else if(helixswim.getPointAtLength(distecalbarr).magnitude() < helixswim.getPointAtLength(distecalendcap).magnitude()) {
+			nucr=helixswim.getPointAtLength(distecalbarr);
+		    }
+		    else {
+			nucr=helixswim.getPointAtLength(distecalendcap);
+		    } 
+
+
+
+
+
+		    Hep3Vector normTrackMom=VecOp.mult(1./trackMom.magnitude(),trackMom);
+		    Hep3Vector normEcal=VecOp.mult(1./nucr.magnitude(),nucr);
+		    double cosangMax=-1000.;
+		    int iclus=0;
+		    Hep3Vector vecClus=new BasicHep3Vector(0,0,0);
+		    double emClusEOpt=0.;
+		    for (Cluster cluster : clusters) {
+			double[] subE = cluster.getSubdetectorEnergies();
+			double eSubTot = 0.;
+			for(int i=0;i<subE.length;i++) eSubTot += subE[i];
+			double emClusE = subE[2]+subE[6];
+			Hep3Vector vec1=new BasicHep3Vector(cluster.getPosition());
+			double cosang = VecOp.dot(normEcal,vec1)/vec1.magnitude();
+			double cosangTrackMom = VecOp.dot(normTrackMom,vec1)/vec1.magnitude();
+			if(cosang > cosangMax) {
+			    cosangMax=cosang;
+			    iclus=clusters.indexOf(cluster);
+			    vecClus=vec1;
+			    emClusEOpt=emClusE;
+			}
+		    }
+		    Cluster cluster = clusters.get(iclus);
+		    double[] clusShape = cluster.getShape();
+		    double[] subE = cluster.getSubdetectorEnergies();
+		    if(cosangMax > cosangMaxMin) {
+			if(abs((emClusEOpt-trackMom.magnitude())/trackMom.magnitude()) < 0.3) {
+			    if(clusShape[0]<300. && clusShape[1]<2000. && clusShape[2]<2000. ) {
+				
+				electronTrackClusterMap.put(track,cluster);
+				clusters.remove(cluster);
+			    }
+			}
+		    }
+		}
+	    }
+				
+	    if(modifyRP) {
+		for(Track track : electronTrackClusterMap.keySet()) {
+		    Hep3Vector trackMom = new BasicHep3Vector(track.getMomentum());
+		    Cluster cluster = electronTrackClusterMap.get(track);
+		    List<ReconstructedParticle> removeRP = new ArrayList<ReconstructedParticle>();
+		    for(ReconstructedParticle recoParticle : recoParticles) {
+			if(recoParticle.getTracks().indexOf(track) >= 0) {
+			    removeRP.add(recoParticle);
+			}
+			if(recoParticle.getClusters().indexOf(cluster) >= 0) {
+			    removeRP.add(recoParticle);
+			}
+		    }
+		    for(ReconstructedParticle recoParticle : removeRP) recoParticles.remove(recoParticle);
+		    BaseReconstructedParticle electronRP = new BaseReconstructedParticle(mElectron);
+		    electronRP.set4Vector(new BasicHepLorentzVector(sqrt(pow(mElectron,2)+trackMom.magnitudeSquared()),trackMom));
+		    electronRP.setCharge(track.getCharge());
+		    electronRP.setParticleIdUsed(new BaseParticleID(dPPP.get(-11*track.getCharge())));
+		    electronRP.setReferencePoint(new BasicHep3Vector(track.getReferencePoint()));
+		    electronRP.addTrack(track);
+		    electronRP.addCluster(cluster);
+		    recoParticles.add(electronRP);
+		}
+		super.process(event);
+	    }
+	}
+
+    }
+  
+}
CVSspam 0.2.8