Print

Print


Author: [log in to unmask]
Date: Tue Jun 30 07:27:14 2015
New Revision: 3209

Log:
committing driver

Modified:
    java/trunk/users/src/main/java/org/hps/users/luca/FeeCalibHistCreator.java

Modified: java/trunk/users/src/main/java/org/hps/users/luca/FeeCalibHistCreator.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/FeeCalibHistCreator.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/FeeCalibHistCreator.java	Tue Jun 30 07:27:14 2015
@@ -5,16 +5,26 @@
  */
 package org.hps.users.luca;
 import hep.aida.IHistogram1D;
+import hep.aida.IHistogram2D;
+import java.io.FileWriter;
+import java.io.IOException;
 
 import java.util.ArrayList;
 import java.util.List;
+import org.hps.conditions.database.DatabaseConditionsManager;
+import org.hps.conditions.ecal.EcalChannel;
 
 import org.hps.conditions.ecal.EcalChannel.EcalChannelCollection;
+import org.hps.conditions.ecal.EcalChannelConstants;
 import org.hps.conditions.ecal.EcalConditions;
+import org.hps.recon.ecal.triggerbank.AbstractIntData;
+import org.hps.recon.ecal.triggerbank.TIData;
 import org.lcsim.conditions.ConditionsManager;
 import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
+import org.lcsim.event.GenericObject;
+import org.lcsim.geometry.Detector;
 import org.lcsim.geometry.Subdetector;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
@@ -24,10 +34,13 @@
  */
 public class FeeCalibHistCreator extends Driver {
     
-double energyThreshold=0;
-    protected String clusterCollectionName = "EcalClustersGTP";
+    double energyThreshold=0.5;
+    protected String clusterCollectionName = "GTPEcalClusters";
+    //create the writer to write the gains on txt
+    private FileWriter writer;
+    String outputFileName = "gains.txt";
     
-    
+    //things you need to get the gains
     private EcalConditions ecalConditions = null;
     final private String ecalName = "Ecal";
     private Subdetector ecal;
@@ -36,35 +49,50 @@
     
     //Declaration of histograms array
     AIDA aida = AIDA.defaultInstance();
-    ArrayList<IHistogram1D> GTPHists = new ArrayList<IHistogram1D>(442);
-    ArrayList<IHistogram1D> GTPSeedHists = new ArrayList<IHistogram1D>(442);
+    ArrayList<IHistogram2D> GTPHists = new ArrayList<IHistogram2D>(442);
+   
     
     
     public void setEnergyThreshold (double threshold){
     this.energyThreshold=threshold;
        }
   
+  public void setOutputFileName(String outputFileName){
+  this.outputFileName = outputFileName+".txt";
+  }
   
-  
-  
+  @Override
+    public void detectorChanged(Detector detector) {
+        // Get the Subdetector.
+        ecal = detector.getSubdetector(ecalName);
+        
+      /*  // ECAL combined conditions object.
+        ecalConditions = ConditionsManager.defaultInstance()
+                .getCachedConditions(EcalConditions.class, TableConstants.ECAL_CONDITIONS).getCachedData();*/
+                       
+        ecalConditions = DatabaseConditionsManager.getInstance().getEcalConditions();
+         channels = ecalConditions.getChannelCollection();
+    }  
 
    @Override   
 public void startOfData(){
    //initialize histograms  
       for(int t=0; t<442; t++){
       String cristallo=String.valueOf(t+1);  
-      String GTPhistName="GTP Cluster Energy(Run)" + cristallo;
-      String GTPSeedHistName="GTP Seed Energy(Run)"+ cristallo;
-      
-      
-      IHistogram1D GTPseedhisto=aida.histogram1D(GTPSeedHistName, 200, 0.0,2.5);
-      IHistogram1D GTPclushisto=aida.histogram1D(GTPhistName, 200, 0.0,2.5);
-     
+      String GTPhistName="GTPCluster-Seeds Energy " + cristallo;
+      IHistogram2D GTPclushisto=aida.histogram2D(GTPhistName, 150, 0.0,1.5,150,0.0,1.5);
       GTPHists.add(GTPclushisto);
-      GTPSeedHists.add(GTPseedhisto);
-   
       }
-    
+   //initialize writer
+      try{
+         //initialize the writers
+         writer=new FileWriter(outputFileName);
+         //Clear the files
+         writer.write("");
+      }
+      catch(IOException e ){
+      System.err.println("Error initializing output file for gains.");
+      }
     
 }
 
@@ -72,10 +100,36 @@
 
     @Override
     public void endOfData(){
- 
+    
+        for(int t=0;t<442;t++){
+      int id =t+1;
+      try{  writer.append(id + " " + gain[t] + "\n");}
+      catch(IOException e){
+      System.err.println("Error closing output file.");}
+      }
+      //close the file writer.  
+      try{
+      writer.close();
+      }
+      catch(IOException e){
+      System.err.println("Error closing utput file.");
+      }
 } 
     @Override
     public void process (EventHeader event){
+        
+          if (event.hasCollection(GenericObject.class, "TriggerBank")) {
+            List<GenericObject> triggerList = event.get(GenericObject.class, "TriggerBank");
+            for (GenericObject data : triggerList)
+                if (AbstractIntData.getTag(data) == TIData.BANK_TAG) {
+                    TIData triggerData = new TIData(data);
+                    if (!triggerData.isSingle1Trigger())//only process singles0 triggers...
+
+                        return;
+                }
+        } else //if (debug)
+            System.out.println(this.getClass().getSimpleName() + ":  No trigger bank found...running over all trigger types");
+  
         
         //here it writes the GTP clusters info
         if(event.hasCollection(Cluster.class,"EcalClustersGTP"))
@@ -85,15 +139,19 @@
            
            
            idBack=getDBID(cluster);
-           
+           EcalChannel channel = channels.findGeometric(cluster.getCalorimeterHits().get(0).getCellID());
+           EcalChannelConstants channelConstants = ecalConditions.getChannelConstants(channel);
+           gain[idBack-1]=channelConstants.getGain().getGain();
            
            //riempio gli istogrammi
            if(cluster.getEnergy()>energyThreshold){
-           GTPHists.get(idBack -1).fill(cluster.getEnergy());
-           GTPSeedHists.get(idBack-1).fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy());
+           GTPHists.get(idBack -1).fill(cluster.getEnergy(),cluster.getCalorimeterHits().get(0).getCorrectedEnergy());
+          
+           //System.out.println("Clu = " + cluster.getEnergy() + " Seed = " + cluster.getCalorimeterHits().get(0).getCorrectedEnergy() + "\n");
            }         
          }
         }
+       
        
     }