lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill
diff -u -r1.1 -r1.2
--- ClPointDriver.java 12 Aug 2009 18:35:07 -0000 1.1
+++ ClPointDriver.java 14 Feb 2012 19:17:08 -0000 1.2
@@ -29,7 +29,13 @@
private double _mindcl;
private String _clustername;
private String[] _oclnames;
- private boolean clpdb = false;
+ private String[] _sipnames;
+ private String[] _snpnames;
+ private String _tilname;
+ private String _tispname;
+ private String _tiptname;
+ private String _tnpilname;
+ private boolean clpdb = true;
public ClPointDriver(double mindIP, double mindILSP, double mindcl)
{
@@ -45,22 +51,38 @@
// get cluster list from event
List<BasicCluster> clusters = event.get(BasicCluster.class,_clustername);
-
+ // make copy to preserve original list
+ List<BasicCluster> copyclus = new ArrayList<BasicCluster>();
+ for (BasicCluster icl : clusters)
+ {
+ BasicCluster shclus = new BasicCluster();
+ if (icl.getSize()>0)
+ {
+ shclus.addCluster(icl);
+ copyclus.add(shclus);
+ }
+ }
// create lists of clusters with common pointing
List<BasicCluster> IPclus = new ArrayList<BasicCluster>(); // points at IP
+ List<BasicCluster> IPtrclus = new ArrayList<BasicCluster>(); // IPs matched to tracks
+ List<BasicCluster> IPphclus = new ArrayList<BasicCluster>(); // IP EM clus not matched to tracks
+ List<BasicCluster> IPnclus = new ArrayList<BasicCluster>(); // IP HAD clus not matched to tracks
List<BasicCluster> ILSPclus = new ArrayList<BasicCluster>(); // points at ILSP
List<BasicCluster> NPclus = new ArrayList<BasicCluster>(); // no pointing
// Get maps linking IL and mip clusters to tracks, tracks linked to SpacePoints
- Map<Track, BasicCluster> trmipmap = (Map<Track, BasicCluster>) event.get("TrackMipMap");
- Map<Track, SpacePoint> trilmap = (Map<Track, SpacePoint>) event.get("TrackILPosMap");
+ Map<Track, SpacePoint> trilmap = (Map<Track, SpacePoint>) event.get(_tilname);
- // Make a new map linking ILSP clusters to tracks
- Map<Track, BasicCluster> trclmap = new HashMap<Track, BasicCluster>();
- Map<BasicCluster, Track> cltrmap = new HashMap<BasicCluster, Track>();
+ // Make new maps linking pointing clusters to tracks
+ Map<Track, BasicCluster> trilspmap = new HashMap<Track, BasicCluster>();
+ Map<Track, BasicCluster> triptrmap = new HashMap<Track, BasicCluster>();
+ Map<Track, BasicCluster> tripphmap = new HashMap<Track, BasicCluster>();
+ Map<Track, BasicCluster> tripnemap = new HashMap<Track, BasicCluster>();
+ Map<Track, BasicCluster> trnpilmap = new HashMap<Track, BasicCluster>();
+ Map<Track, BasicCluster> trnpamap = new HashMap<Track, BasicCluster>();
// loop over all clusters, determining pointing properties
- for (BasicCluster clus : clusters)
+ for (BasicCluster clus : copyclus)
{
int clindex = 0;
// first, make sure this cluster has enough hits, if not, put in
@@ -79,28 +101,29 @@
clvec[0] = clrxyz*Math.sin(thdir)*Math.cos(phdir);
clvec[1] = clrxyz*Math.sin(thdir)*Math.sin(phdir);
clvec[2] = clrxyz*Math.cos(thdir);
- aida.cloud1D("Cluster ITheta").fill(thdir); // should be 0 to pi
- aida.cloud1D("Cluster IPhi").fill(phdir); // should be 0 to 2pi
+ if (clpdb) aida.cloud1D("Cluster ITheta").fill(thdir); // should be 0 to pi
+ if (clpdb) aida.cloud1D("Cluster IPhi").fill(phdir); // should be 0 to 2pi
// also get IP direction vector using cluster position
double IPph = Math.atan2(clpos[1],clpos[0]);
if (IPph<0) IPph+=2*Math.PI;
double ccr = Math.sqrt(clpos[0]*clpos[0]+clpos[1]*clpos[1]);
+ double clz = Math.abs(clpos[2]);
double IPth = Math.atan(ccr/clpos[2]);
if (IPth<0) IPth+=Math.PI;
- aida.cloud1D("IP dir Theta").fill(IPth);
- aida.cloud1D("IP dir Phi").fill(IPph);
+ if (clpdb) aida.cloud1D("IP dir Theta").fill(IPth);
+ if (clpdb) aida.cloud1D("IP dir Phi").fill(IPph);
double[] ipvec = new double[3];
ipvec[0] = clpos[0];
ipvec[1] = clpos[1];
ipvec[2] = clpos[2];
double dth = Math.abs(thdir-IPth);
- aida.cloud1D("Diff Ith IPth").fill(dth);
+ if (clpdb) aida.cloud1D("Diff Ith IPth").fill(dth);
double dph = Math.abs(phdir-IPph);
if (dph>Math.PI) dph = 2*Math.PI-dph;
- aida.cloud1D("Diff Iph IPph").fill(dph);
- aida.cloud2D("Diff theta phi").fill(dph,dth);
+ if (clpdb) aida.cloud1D("Diff Iph IPph").fill(dph);
+ if (clpdb) aida.cloud2D("Diff theta phi").fill(dph,dth);
double dthph = Math.sqrt(dth*dth+dph*dph);
- aida.cloud1D("Diff dthph").fill(dthph);
+ if (clpdb) aida.cloud1D("Diff dthph").fill(dthph);
double magcl = Math.sqrt(clvec[0]*clvec[0]+clvec[1]*clvec[1]+clvec[2]*clvec[2]);
double magip = Math.sqrt(ipvec[0]*ipvec[0]+ipvec[1]*ipvec[1]+ipvec[2]*ipvec[2]);
// check with ILSPs, keeping best match to track
@@ -134,17 +157,17 @@
// double trphi = trIL.phi(); // track phi at IL
double clilth = Math.atan(delr/delz);
if (clilth<0) clilth+=Math.PI;
- aida.cloud1D("Cl IL Theta").fill(clilth);
+ if (clpdb) aida.cloud1D("Cl IL Theta").fill(clilth);
double clilph = Math.atan2(-dely,-delx);
if (clilph<0) clilph+=2.*Math.PI;
- aida.cloud1D("Cl IL Phi").fill(clilph);
+ if (clpdb) aida.cloud1D("Cl IL Phi").fill(clilph);
// now get difference between cluster I and IL
double dilth = Math.abs(thdir-clilth);
- aida.cloud1D("Diff Ith ILSPth").fill(dilth);
+ if (clpdb) aida.cloud1D("Diff Ith ILSPth").fill(dilth);
double dilph = Math.abs(phdir-clilph);
if (dilph>Math.PI) dilph = 2*Math.PI-dilph;
- aida.cloud1D("Diff Iph ILSPph").fill(dilph);
- aida.cloud2D("Cl IPhi vs ILSPPhi").fill(clilph,phdir);
+ if (clpdb) aida.cloud1D("Diff Iph ILSPph").fill(dilph);
+ if (clpdb) aida.cloud2D("Cl IPhi vs ILSPPhi").fill(clilph,phdir);
double[] ilvec = new double[3];
// ilvec[0] = clrxyz*Math.sin(clilth)*Math.cos(clilph);
// ilvec[1] = clrxyz*Math.sin(clilth)*Math.sin(clilph);
@@ -161,111 +184,92 @@
double dotiip = VecOp.dot(cl3v, ip3v);
double cosiil = Math.abs(dotiil/(magcl*magil));
double cosiip = Math.abs(dotiip/(magcl*magip));
- aida.cloud1D("CosDel of IclIL vectors").fill(cosiil);
- aida.cloud1D("CosDel of IclIP vectors").fill(cosiip);
- aida.cloud1D("Diff cdil cdip").fill(cosiil-cosiip);
- aida.cloud2D("Diff ILSP theta phi").fill(dilph,dilth);
+ if (clpdb) aida.cloud1D("CosDel of IclIL vectors").fill(cosiil);
+ if (clpdb) aida.cloud1D("CosDel of IclIP vectors").fill(cosiip);
+ if (clpdb) aida.cloud1D("Diff cdil cdip").fill(cosiil-cosiip);
+ if (clpdb) aida.cloud2D("Diff ILSP theta phi").fill(dilph,dilth);
double dilthph = Math.sqrt(dilth*dilth+dilph*dilph);
- aida.cloud1D("Diff dilthph").fill(dilthph);
- aida.cloud1D("Diff IP IL").fill(dthph-dilthph);
- aida.cloud2D("IP vs IL diff").fill(dilthph,dthph);
- aida.cloud2D("DiffIIL vs CosDel for all clus").fill(cosiil,dilthph);
+ if (clpdb) aida.cloud1D("Diff dilthph").fill(dilthph);
+ if (clpdb) aida.cloud1D("Diff IP IL").fill(dthph-dilthph);
+ if (clpdb) aida.cloud2D("IP vs IL diff").fill(dilthph,dthph);
+ if (clpdb) aida.cloud2D("DiffIIL vs CosDel for all clus").fill(cosiil,dilthph);
// if (dilthph<dthph && dilthph<bestdis) // points at ILSP more than IP
- if (cosiil>cosiip && cosiil>bestdis)
+// if (cosiil>cosiip && cosiil>bestdis)
+ if (cosiil>cosiip)
{
- aida.cloud1D("Diff I and IL for ILSP Clus").fill(dilthph);
- aida.cloud1D("CosDel for ILSP Clus").fill(cosiil);
- aida.cloud2D("DiffIIL vs CosDel for ILSP clus").fill(cosiil,dilthph);
+ if (clpdb) aida.cloud1D("Diff I and IL for ILSP Clus").fill(dilthph);
+ if (clpdb) aida.cloud1D("CosDel for ILSP Clus").fill(cosiil);
+ if (clpdb) aida.cloud2D("DiffIIL vs CosDel for ILSP clus").fill(cosiil,dilthph);
// bestdis = dilthph;
- bestdis = cosiil;
- cltrmap.put(clus, itr);
- clindex++;
-// ILSPclus.add(clus);
-// trclmap.put(itr, clus);
+// bestdis = cosiil;
+ clindex++; // increment since used
+ ILSPclus.add(clus);
+ trilspmap.put(itr, clus);
+ }
+ // before exiting track loop, check to see if this could be
+ // an IP-pointing track match cluster
+ if (clindex==0 && dthph<_mindIP && dist<_mindcl)
+ {
+ clindex++; // increment since used
+ IPclus.add(clus); // add to IP cluster list
+ IPtrclus.add(clus); // add to IP track cluster list
}
-// if (dilthph<dthph) break;
} // end of track loop
- if (clindex>0)
+
+// System.out.println(" AfterTr Cl Index " + clindex);
+ // if index is zero and dist less than min IP then these clusters
+ // point to IP and are either photons or neutral hadrons
+ if (clindex==0 && dthph<_mindIP)
{
- ILSPclus.add(clus);
+ clindex++; // incremenet since used
+ IPclus.add(clus);
+ // in barrel (absz<1680), if rxy less than 1400 then photon
+ if (ccr<1400. && clz<1680.)
+ {
+ IPphclus.add(clus);
+ // in endcap, rxy<1270 is ECAL
+ } else if (ccr<1270. && clz>1680. && clz<1800.) // also a photon
+ {
+ IPphclus.add(clus);
+ } else
+ {
+ IPnclus.add(clus);
+ }
}
-// System.out.println(" AfterTr Cl Index " + clindex);
-// if (clindex>0) continue;
- if (clindex==0 && dthph<_mindIP) clindex--;
- }
- // check index, sort clusters
+ } // end of test section for clusters with at least 4 hits
+ // check index again
// System.out.println(" Cl Index " + clindex);
+ // if gets this far without incrementing index, cluster is non-pointing
if (clindex==0) NPclus.add(clus);
-// if (clindex>0) ILSPclus.add(clus);
- if (clindex<0) IPclus.add(clus);
+
} // end of cluster loop
// have clusters defined into 3 classes - pointing to the interaction layer
// spacepoint, pointing to the IP, non-pointing
- event.put("TrackILSPMap",trclmap);
- event.put("ClusILSPMap",cltrmap);
-// if (NPclus.size()>0) event.put("NPClusters",NPclus);
- event.put("NPClusters",NPclus);
- aida.cloud1D("Number of NoPoint Clus").fill(NPclus.size());
-// if (IPclus.size()>0) event.put("IPClusters",IPclus);
- event.put("IPClusters",IPclus);
- aida.cloud1D("Number of IPPoint Clus").fill(IPclus.size());
-// if (ILSPclus.size()>0) event.put("ILSPClusters",ILSPclus);
- event.put("ILSPClusters",ILSPclus);
+ // ILSP CLusters first
+ event.put(_tispname,trilspmap); // track ilsp map
+ event.put(_oclnames[0],ILSPclus); // ilsp cluster list
aida.cloud1D("Number of ILSPPoint Clus").fill(ILSPclus.size());
- // check the IP pointing clusters - divide into close/far from track using
- // distance measure
- List<BasicCluster> IPtrclus = new ArrayList<BasicCluster>(); // matched to tracks
- List<BasicCluster> IPphclus = new ArrayList<BasicCluster>(); // not matched to tracks
-
- for (BasicCluster ipcl : IPclus)
- {
- int ipclind = 0;
- double[] clpos = ipcl.getPosition();
- double clph = Math.atan2(clpos[1],clpos[0]);
- if (clph<0) clph+=2*Math.PI;
- double ccr = Math.sqrt(clpos[0]*clpos[0]+clpos[1]*clpos[1]);
- double clth = Math.atan(ccr/clpos[2]);
- if (clth<0) clth+=Math.PI;
- // compare with extrapolated track position
- for (Track itr : trilmap.keySet())
- {
- // get associated IL coordinates from IL map
- SpacePoint trIL = trilmap.get(itr);
- double trilth = Math.atan(trIL.rxy()/trIL.z());
- if (trilth<0) trilth+=Math.PI;
- double trilph = Math.atan2(trIL.y(),trIL.x());
- if (trilph<0) trilph+=2*Math.PI;
- // check if cluster close to this IL in theta-phi
- double dist = 999;
- double dccth = Math.abs(trilth-clth);
- double dccph = Math.abs(trilph-clph);
- if (dccph>Math.PI) dccph = 2*Math.PI-dccph;
- dist = Math.sqrt(dccth*dccth+dccph*dccph);
- if (dist<_mindcl) // best combination is 0.07 for ZZ in SiD01
- {
- ipclind++;
- }
- } // end of track loop
- // put cluster in proper list
- if (ipclind>0) IPtrclus.add(ipcl);
- if (ipclind==0) IPphclus.add(ipcl);
- } // end of cluster loop
-
- // now have 2 classes of IP pointing clusters - those that are photon-like
- // and those that are track-like as determined only by distance to closest track
-// if (IPtrclus.size()>0) event.put("IPTrackClusters",IPtrclus);
- event.put("IPTrackClusters",IPtrclus);
+ // IP clusters and subclusters next
+ event.put(_tiptname,triptrmap); // track ip map
+ event.put(_sipnames[0],IPtrclus); // ip track cluster list
aida.cloud1D("Number of IPPoint Track Clus").fill(IPtrclus.size());
-// if (IPphclus.size()>0) event.put("IPPhoClusters",IPphclus);
- event.put("IPPhoClusters",IPphclus);
+ event.put(_sipnames[1],IPphclus); // ip photon cluster list
aida.cloud1D("Number of IPPoint Pho Clus").fill(IPphclus.size());
+ event.put(_sipnames[2],IPnclus); // ip neutral hadron cluster list
+ aida.cloud1D("Number of IPPoint N Clus").fill(IPnclus.size());
+ event.put(_oclnames[1],IPclus); // all ip clusters
+ aida.cloud1D("Number of IPPoint Clus").fill(IPclus.size());
+
+ // NP clusters here
+ event.put(_oclnames[2],NPclus);
+ aida.cloud1D("Number of NoPoint Clus").fill(NPclus.size());
// check pointing of IP and NP clusters to ILSP clusters - try to
// link fragments of charged hadrons
List<BasicCluster> NPILclus = new ArrayList<BasicCluster>(); // NP clusters pointing to ILSP clusters
-
+ List<BasicCluster> NPAclus = new ArrayList<BasicCluster>(); // NP cluster which point to nothing
for (BasicCluster npc : NPclus)
{
int iclilpt = 0;
@@ -277,8 +281,8 @@
if (thdir<0) thdir+=Math.PI;
double phdir = npc.getIPhi();
if (phdir<0) phdir+=2*Math.PI;
- aida.cloud1D("NPCluster ITheta").fill(thdir); // should be 0 to pi
- aida.cloud1D("NPCluster IPhi").fill(phdir); // should be 0 to 2pi
+ if (clpdb) aida.cloud1D("NPCluster ITheta").fill(thdir); // should be 0 to pi
+ if (clpdb) aida.cloud1D("NPCluster IPhi").fill(phdir); // should be 0 to 2pi
// get x,y,z for local pointing
double npclrxyz = Math.sqrt(clpos[0]*clpos[0]+clpos[1]*clpos[1]+clpos[2]*clpos[2]);
double[] nppvec = new double[3];
@@ -317,22 +321,22 @@
if (Iclth<0) Iclth+=Math.PI;
// calculate distance in x,y between clusters
double dclxyz = Math.sqrt(delx*delx+dely*dely+delz*delz);
- aida.cloud1D("Distance in xyz between NP and ILSP clusters").fill(dclxyz);
+ if (clpdb) aida.cloud1D("Distance in xyz between NP and ILSP clusters").fill(dclxyz);
// calculate difference between clus pointing and clus-clus direction
double dilth = Math.abs(thdir-Iclth);
- aida.cloud1D("Diff Iclth ILSPth").fill(dilth);
+ if (clpdb) aida.cloud1D("Diff Iclth ILSPth").fill(dilth);
double dilph = Math.abs(phdir-Iclph);
if (dilph>Math.PI) dilph = 2*Math.PI-dilph;
- aida.cloud1D("Diff Iclph ILSPph").fill(dilph);
- aida.cloud2D("Diff IclILSP theta phi").fill(dilph,dilth);
+ if (clpdb) aida.cloud1D("Diff Iclph ILSPph").fill(dilph);
+ if (clpdb) aida.cloud2D("Diff IclILSP theta phi").fill(dilph,dilth);
double dilthph = Math.sqrt(dilth*dilth+dilph*dilph);
- aida.cloud1D("Diff diclilthph").fill(dilthph);
+ if (clpdb) aida.cloud1D("Diff diclilthph").fill(dilthph);
// compare dot product of cluster pointing to npil direction
double cpdot = VecOp.dot(npp, npil);
double cthcp = Math.abs(cpdot/(magnpp*magnpi));
double ccdot = VecOp.dot(npp, npcl);
double cthcc = Math.abs(ccdot/(magnpp*magnpcl));
- aida.cloud1D("CosDel np IL").fill(cthcc);
+ if (clpdb) aida.cloud1D("CosDel np IL").fill(cthcc);
// if (dclxyz<300. && dilth<1.5 && dilth<distclil)
if (cthcp>cthcc)
{
@@ -342,8 +346,10 @@
}
} // end of ILSP cluster loop
if (iclilpt>0) NPILclus.add(npc);
+ if (iclilpt==0) NPAclus.add(npc);
}
- event.put("NPILClusters",NPILclus);
+ event.put(_snpnames[0],NPILclus);
+ event.put(_snpnames[1],NPAclus);
// check purity of ILSP clusters - should be linked to charged particles
int nhev = 0;
@@ -373,17 +379,17 @@
double dch = numchhits;
double dph = numphhits;
double dnuh = numnhhits;
- aida.cloud1D("MC Purity for ILSP Clusters").fill(dch/dnh);
- aida.cloud1D("Pho cont to ILSP").fill(dph/dnh);
- aida.cloud1D("NH cont to ILSP").fill(dnuh/dnh);
+ if (clpdb) aida.cloud1D("MC Purity for ILSP Clusters").fill(dch/dnh);
+ if (clpdb) aida.cloud1D("Pho cont to ILSP").fill(dph/dnh);
+ if (clpdb) aida.cloud1D("NH cont to ILSP").fill(dnuh/dnh);
}
double dnhev = nhev;
double dnchev = nchev;
double dnphev = nphev;
double dnnhev = nnhev;
- aida.cloud1D("MC Purity for ILSP Clus per event").fill(dnchev/dnhev);
- aida.cloud1D("Pho cont to ILSP per event").fill(dnphev/dnhev);
- aida.cloud1D("NH cont to ILSP per event").fill(dnnhev/dnhev);
+ if (clpdb) aida.cloud1D("MC Purity for ILSP Clus per event").fill(dnchev/dnhev);
+ if (clpdb) aida.cloud1D("Pho cont to ILSP per event").fill(dnphev/dnhev);
+ if (clpdb) aida.cloud1D("NH cont to ILSP per event").fill(dnnhev/dnhev);
// now check the IP-pointing clusters - divided into the 2 classes
// first, the photon-like class
@@ -414,19 +420,19 @@
double dch = numchhits;
double dph = numphhits;
double dnuh = numnhhits;
- aida.cloud1D("MC Pho Purity for IPPho Clusters").fill(dph/dnh);
- aida.cloud1D("NH cont to IPPho Clusters").fill(dnuh/dnh);
- aida.cloud1D("MC Pho+NH Purity for IPPho Clusters").fill((dph+dnuh)/dnh);
- aida.cloud1D("ChH cont to IPPho CLusters").fill(dch/dnh);
+ if (clpdb) aida.cloud1D("MC Pho Purity for IPPho Clusters").fill(dph/dnh);
+ if (clpdb) aida.cloud1D("NH cont to IPPho Clusters").fill(dnuh/dnh);
+ if (clpdb) aida.cloud1D("MC Pho+NH Purity for IPPho Clusters").fill((dph+dnuh)/dnh);
+ if (clpdb) aida.cloud1D("ChH cont to IPPho CLusters").fill(dch/dnh);
}
double dnhev2 = nhev2;
double dnchev2 = nchev2;
double dnphev2 = nphev2;
double dnnhev2 = nnhev2;
- aida.cloud1D("MC Pho Purity for IPPho Clus per event").fill(dnphev2/dnhev2);
- aida.cloud1D("NH cont to IPPho per event").fill(dnnhev2/dnhev2);
- aida.cloud1D("MC Pho+NH Purity for IPPho Clus per event").fill((dnphev2+dnnhev2)/dnhev2);
- aida.cloud1D("ChH cont to IPPho per event").fill(dnchev2/dnhev2);
+ if (clpdb) aida.cloud1D("MC Pho Purity for IPPho Clus per event").fill(dnphev2/dnhev2);
+ if (clpdb) aida.cloud1D("NH cont to IPPho per event").fill(dnnhev2/dnhev2);
+ if (clpdb) aida.cloud1D("MC Pho+NH Purity for IPPho Clus per event").fill((dnphev2+dnnhev2)/dnhev2);
+ if (clpdb) aida.cloud1D("ChH cont to IPPho per event").fill(dnchev2/dnhev2);
// now check purity of IPTrack Clusters
int nhev4 = 0;
@@ -456,17 +462,17 @@
double dch = numchhits;
double dph = numphhits;
double dnuh = numnhhits;
- aida.cloud1D("Pho cont to IPTr Clusters").fill(dph/dnh);
- aida.cloud1D("NH cont to IPTr Clusters").fill(dnuh/dnh);
- aida.cloud1D("MC ChH Purity for IPTr CLusters").fill(dch/dnh);
+ if (clpdb) aida.cloud1D("Pho cont to IPTr Clusters").fill(dph/dnh);
+ if (clpdb) aida.cloud1D("NH cont to IPTr Clusters").fill(dnuh/dnh);
+ if (clpdb) aida.cloud1D("MC ChH Purity for IPTr CLusters").fill(dch/dnh);
}
double dnhev4 = nhev4;
double dnchev4 = nchev4;
double dnphev4 = nphev4;
double dnnhev4 = nnhev4;
- aida.cloud1D("Pho cont to IPTr Clus per event").fill(dnphev4/dnhev4);
- aida.cloud1D("NH cont to IPTr Clus per event").fill(dnnhev4/dnhev4);
- aida.cloud1D("MC ChH Purity for IPTr per event").fill(dnchev4/dnhev4);
+ if (clpdb) aida.cloud1D("Pho cont to IPTr Clus per event").fill(dnphev4/dnhev4);
+ if (clpdb) aida.cloud1D("NH cont to IPTr Clus per event").fill(dnnhev4/dnhev4);
+ if (clpdb) aida.cloud1D("MC ChH Purity for IPTr per event").fill(dnchev4/dnhev4);
// now check remaining Non-Pointing clusters - are these neutral hadrons?
int nhev3 = 0;
@@ -496,27 +502,46 @@
double dch = numchhits;
double dph = numphhits;
double dnuh = numnhhits;
- aida.cloud1D("MC NH Purity for NP Clusters").fill(dnuh/dnh);
- aida.cloud1D("ChH cont to NP Clusters").fill(dch/dnh);
- aida.cloud1D("Pho cont to NP Clusters").fill(dph/dnh);
+ if (clpdb) aida.cloud1D("MC NH Purity for NP Clusters").fill(dnuh/dnh);
+ if (clpdb) aida.cloud1D("ChH cont to NP Clusters").fill(dch/dnh);
+ if (clpdb) aida.cloud1D("Pho cont to NP Clusters").fill(dph/dnh);
}
double dnhev3 = nhev3;
double dnchev3 = nchev3;
double dnphev3 = nphev3;
double dnnhev3 = nnhev3;
- aida.cloud1D("MC NH Purity for NP Clus per event").fill(dnnhev3/dnhev3);
- aida.cloud1D("ChH cont to NP Clus per event").fill(dnchev3/dnhev3);
- aida.cloud1D("Pho cont to NP Clus per event").fill(dnphev3/dnhev3);
-
+ if (clpdb) aida.cloud1D("MC NH Purity for NP Clus per event").fill(dnnhev3/dnhev3);
+ if (clpdb) aida.cloud1D("ChH cont to NP Clus per event").fill(dnchev3/dnhev3);
+ if (clpdb) aida.cloud1D("Pho cont to NP Clus per event").fill(dnphev3/dnhev3);
}
-
- public void setInputClusterName(String name)
+
+ public void setInputClusterList(String name)
{
_clustername = name;
}
- public void setOutputClusterLists(String[] outclnames)
+ public void setOutPointClusterLists(String[] outclnames)
{
_oclnames = outclnames;
}
+ public void setSubIPClusterLists(String[] subipnames)
+ {
+ _sipnames = subipnames;
+ }
+ public void setSubNPClusterLists(String[] subnpnames)
+ {
+ _snpnames = subnpnames;
+ }
+ public void setTrackILPosMap(String tilname)
+ {
+ _tilname = tilname;
+ }
+ public void setTrILSPMap(String tispname)
+ {
+ _tispname = tispname;
+ }
+ public void setTrIPTMap(String tiptname)
+ {
+ _tiptname = tiptname;
+ }
}