Print

Print


Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill on MAIN
ClPointDriver.java+168-1431.1 -> 1.2

lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill
ClPointDriver.java 1.1 -> 1.2
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;
+    }
 }
 
CVSspam 0.2.12


Use REPLY-ALL to reply to list

To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1