Print

Print


Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/Mbussonn on MAIN
JetFinder.java+57-761.3 -> 1.4
Adding my package to be able to synchronize it with other computer

lcsim-contrib/src/main/java/org/lcsim/contrib/Mbussonn
JetFinder.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- JetFinder.java	8 Jun 2009 18:44:44 -0000	1.3
+++ JetFinder.java	19 Jun 2009 19:15:23 -0000	1.4
@@ -6,6 +6,7 @@
 import hep.physics.vec.BasicHep3Vector;
 import hep.physics.vec.Hep3Vector;
 import java.util.ArrayList;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
 import org.lcsim.contrib.Partridge.TrackingTest.TrackAnalysis;
@@ -19,11 +20,10 @@
 import org.lcsim.event.RelationalTable;
 import org.lcsim.event.Track;
 import org.lcsim.event.base.BaseRelationalTable;
-import org.lcsim.event.util.JetDriver;
 import org.lcsim.fit.helicaltrack.HelicalTrackFit;
-import org.lcsim.fit.helicaltrack.HelixParamCalculator;
 import org.lcsim.recon.tracking.seedtracker.SeedStrategy;
 import org.lcsim.recon.tracking.seedtracker.StrategyXMLUtils;
+import org.lcsim.recon.vertexing.zvtop4.VectorArithmetic;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 
@@ -92,82 +92,55 @@
 		List<SeedStrategy> slist = StrategyXMLUtils.getStrategyListFromResource(sfile);
 		FindableTrack findable = new FindableTrack(event);
 
-		List<MCParticle> mcplist = event.getMCParticles();
-		System.out.println("mcp in event : "+mcplist.size());
+		List<MCParticle> mcplist = new LinkedList<MCParticle>();//event.getMCParticles();
+		
 		//mcplist.clear();
 		for(ReconstructedParticle jet : jets){
+			double jpx = jet.getMomentum().x();
+			double jpy = jet.getMomentum().y();
+			double jpz = jet.getMomentum().z();
+			double jpt = Math.sqrt(jpx*jpx +jpy*jpy);
+			if (jpt <150)continue;
+			aida.cloud1D("jet direction r z").fill(jpz,jpt);
 			List<ReconstructedParticle> listOfParticles = jet.getParticles();
 			for(ReconstructedParticle rcpInJet : listOfParticles){
 				MCParticle mcpp = (MCParticle) rc2mc.to(rcpInJet);
 				System.out.println("one more mcp");
 				//MCParticleExtended mcpe = new MCParticleExtended(mcpp,event);
-				//mcplist.add(mcpp);
+				if(mcpp != null)
+					mcplist.add(mcpp);
 			}
-			
-		}
-		System.out.println("mcp in jets  : "+mcplist.size());
-		for(MCParticle mcpx : mcplist){
-			MCParticleExtended mcp = new MCParticleExtended(mcpx,event);
-			Set<Track> setOfTrack= trktomc.allTo(mcpx);
-			Set<Track> setOfTx = trktomc.allTo(mcp);
-			double ptotal = mcp.getPTotal();
-			double ptcut=50.;
-			double nrcp = rc2mc.allTo(mcpx).size();
-			aida.cloud1D("rcp per mcp").fill(nrcp);
-			if( ptotal < ptcut
+			Hep3Vector jetMomentum = jet.getMomentum();
+			System.out.println("mcp in jet : "+mcplist.size());
+			int ntracks=0;
+			for(MCParticle mcp : mcplist){
+				MCParticleExtended mcpx = new MCParticleExtended(mcp,event);
+				Set<Track> setOfTrack= trktomc.allTo(mcp);
+				Hep3Vector mmt = mcp.getMomentum();
+				double angle = getAngle(jetMomentum,mmt);
+				aida.cloud1D("angle").fill(angle);
+				double ptotal = mcpx.getPTotal();
+				double ptcut=50.;
+				if( ptotal < ptcut
 					//||(mcp.getPDGID()!=13 && mcp.getPDGID()!=-13)
 					||mcp.getGeneratorStatus()!= MCParticleExtended.FINAL_STATE
-					||Math.abs(mcp.getEta())>2.5)
+					||Math.abs(mcpx.getEta())>2.5)
 				{continue;}
-			else{
-				//if(!findable.isFindable(mcpx, slist)){
-				if(false){
-					System.out.println("muon non trouvable...");
-						List<Ignore> ignores = new ArrayList<Ignore>();
-						ignores.add(Ignore.NoZ0Cut);
-						if (findable.isFindable(mcpx, slist,ignores)){
-							System.out.println("not findable because of Z0");
-							continue;
-							}
-						ignores.add(Ignore.NoDCACut);
-						if (findable.isFindable(mcpx, slist,ignores)){
-							System.out.println("not findable because of DCA");
-							continue;
-							}
-						ignores.add(Ignore.NoMinHitCut);
-						if (findable.isFindable(mcpx, slist,ignores)){
-							System.out.println("not findable because of min hit");
-							continue;
-							}
-						ignores.add(Ignore.NoSeedCheck);
-						if (findable.isFindable(mcpx, slist,ignores)){
-							System.out.println("not findable because of seed check");
-							continue;
-							}
-						ignores.add(Ignore.NoConfirmCheck);
-						if (findable.isFindable(mcpx, slist,ignores)){
-							System.out.println("not findable because of no confirm check");
-							continue;
-							}
-						ignores=null;
-						System.out.println("not findable at all... why ?");
-						}
-				double weight=0.;
-
-				if(setOfTrack.size()>1){
-					aida.cloud1D("track with more than 1 mcp").fill(setOfTrack.size());						continue;
+				else{
+					if(setOfTrack.size()>1){
+						aida.cloud1D("track with more than 1 mcp").fill(setOfTrack.size());						continue;
 					}
-				if(setOfTrack.size()==0) {
-					weight=0.;
-					int nhits = findable.LayersHit(mcpx);
-					aida.cloud1D("mcp/eta for non-finded particle").fill(mcp.getEta());
-					aida.cloud1D("mcp/theta for non-finded particle").fill(mcp.getTheta());
-					aida.cloud1D("nhits for non-finded muons").fill(nhits);
-					}
-				else if (setOfTrack.size()==1){
-					System.out.println("tracktomcp : "+setOfTx.size()+" Vs "+setOfTrack.size());
+					else if(setOfTrack.size()==0) {
+						double weight=0.;
+						int nhits = findable.LayersHit(mcpx);
+						aida.cloud1D("mcp/eta for non-finded particle").fill(mcpx.getEta());
+						aida.cloud1D("mcp/theta for non-finded particle").fill(mcpx.getTheta());
+						aida.cloud1D("nhits for non-finded muons").fill(nhits);
+					}else if (setOfTrack.size()==1){
+					ntracks++;
+					//System.out.println("tracktomcp : "+setOfTx.size()+" Vs "+setOfTrack.size());
 					System.out.println("rcp associed with mcp "+rc2mc.allTo(mcpx).size());
-					weight=1;
+					double weight=1;
 					Track track = setOfTrack.iterator().next();
 					double d0 = track.getTrackParameter(HelicalTrackFit.dcaIndex);
 					double z0 = track.getTrackParameter(HelicalTrackFit.z0Index);
@@ -175,7 +148,11 @@
 					double py = track.getPY();
 					double pz = track.getPZ();
 					double pt = Math.sqrt(px*px+py*py);
-					double ps = Math.sqrt(px*px+py*py+pz*pz);					
+					double ps = Math.sqrt(px*px+py*py+pz*pz);
+					double p[] = track.getMomentum();
+					Hep3Vector h3vp = new BasicHep3Vector(p[0],p[1],p[2]);
+					double trackangle = getAngle(h3vp,jetMomentum);
+					aida.cloud1D("track angle").fill(trackangle);
 //					double bfield = event.getDetector().getFieldMap().getField(new BasicHep3Vector(0., 0., 0.)).z();
 //					HelixParamCalculator helix = new HelixParamCalculator(mcp, bfield);
 //					double d0mc = helix.getDCA();
@@ -184,23 +161,27 @@
 					aida.cloud1D("track/z0").fill(z0);
 					aida.cloud2D("track/do VS Z0").fill(z0, d0);
 					aida.cloud1D("track/tr momentum").fill(pt);
-					aida.cloud1D("track/scalar momentum").fill(ps);
-					aida.cloud1D("track/residual t momentum").fill(mcp.getPR()-pt);
-					aida.cloud1D("track/residual d0").fill(d0-mcp.getDCA());
-					aida.cloud1D("track/residual z0").fill(z0-mcp.getZ0());
+					//aida.cloud1D("track/scalar momentum").fill(ps);
+					aida.cloud1D("track/residual t momentum").fill(mcpx.getPR()-pt);
+					aida.cloud1D("track/residual d0").fill(d0-mcpx.getDCA());
+					aida.cloud1D("track/residual z0").fill(z0-mcpx.getZ0());
 					aida.cloud1D("track/number of Tracker hits").fill(track.getTrackerHits().size());
 					aida.cloud1D("track/number of mcp hits").fill(findable.LayersHit(mcp));
 					aida.cloud1D("track/chiSquared").fill(track.getChi2());
+					}//ed loop through mcp
+				aida.cloud2D("ntrack vs nMCP in jet").fill(mcplist.size(),ntracks);
+				aida.cloud2D("nTrack vs nRCP in jet").fill(listOfParticles.size(), ntracks);
 				}
 
-
-
-
-				}
-			}//ENDFOR
+			}
+			mcplist.clear();	
+		}
 		super.printStatistics(System.out);
    }
-
+   private double getAngle(Hep3Vector h1, Hep3Vector h2){
+	   double ca = VectorArithmetic.dot(h1, h2)/(h1.magnitude()*h2.magnitude());
+	   return Math.acos(ca);
+			}
 
 
 }
CVSspam 0.2.8