Print

Print


Author: [log in to unmask]
Date: Thu Oct 30 10:44:14 2014
New Revision: 1346

Log:
Commit local changes to the Ecal commissioning branch

Modified:
    java/branches/hps-java_ecal-commissioning/conditions/src/test/java/org/hps/conditions/ecal/EcalDaqTest.java
    java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/ECalEvioReader.java
    java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/EventConstants.java
    java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java
    java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/TriggerData.java

Modified: java/branches/hps-java_ecal-commissioning/conditions/src/test/java/org/hps/conditions/ecal/EcalDaqTest.java
 =============================================================================
--- java/branches/hps-java_ecal-commissioning/conditions/src/test/java/org/hps/conditions/ecal/EcalDaqTest.java	(original)
+++ java/branches/hps-java_ecal-commissioning/conditions/src/test/java/org/hps/conditions/ecal/EcalDaqTest.java	Thu Oct 30 10:44:14 2014
@@ -10,10 +10,10 @@
 
 public class EcalDaqTest  extends TestCase {
 	   public void setUp() {
-	        new DevReadOnlyConfiguration().setup().load("HPS-TestRun-v8", 0);
+	        new DevReadOnlyConfiguration().setup().load("HPS-ECalCommissioning", 0);
 	    }
 	    
-	    public void testEcalLed() {
+	    public void testEcalDAQ() {
 	        DatabaseConditionsManager manager = DatabaseConditionsManager.getInstance();
 	        EcalChannelCollection collection = manager.getConditionsData(EcalChannelCollection.class, TableConstants.ECAL_CHANNELS);
 	        System.out.println("CH ID \t X \t Y \t crate \t slot \t number \t  ");

Modified: java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/ECalEvioReader.java
 =============================================================================
--- java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/ECalEvioReader.java	(original)
+++ java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/ECalEvioReader.java	Thu Oct 30 10:44:14 2014
@@ -54,6 +54,8 @@
                         for (BaseStructure slotBank : bank.getChildren()) {
                             tag=slotBank.getHeader().getTag();
                          
+                            /*A. Celentano: this is here just for pure debugging, 
+                             * since the trigger is already dealt with in the main event builder*/                         
                             if (tag == EventConstants.TRIGGER_BANK_TAG) {
                                 if (debug) {
                                     int[] data = slotBank.getIntData();
@@ -94,7 +96,7 @@
                                     }
                                 }
                             else{
-			      continue; //A.C. the TI case, for example, goes here.
+			      continue; //A.C. the TI case, for example, goes here. It is critical to have it here.
                             }
                         }
                     } catch (EvioException e) {
@@ -250,7 +252,7 @@
                     if (id == null) {
                         System.out.printf("Crate %d, slot %d, channel %d not found in map\n", crate, slot, channel);
                     }
-                    else if ((slot==20)&&(channel>=13)) continue;
+                    else if ((slot==20)&&(channel>=13)) continue; //A.C. temporary work around. Has to be here since we need to read the full EVIO composite.
                     else {
                         hits.add(new BaseRawCalorimeterHit(id, pulseIntegral, pulseTime));
                     }

Modified: java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/EventConstants.java
 =============================================================================
--- java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/EventConstants.java	(original)
+++ java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/EventConstants.java	Thu Oct 30 10:44:14 2014
@@ -15,9 +15,9 @@
     public static final int EVENTID_BANK_TAG = 0xC000;
     public static final int EVENT_BANK_NUM = 0xCC;
     // These correspond to ROC (readout crate) IDs from the DAQ.
-    public static final int ECAL_TOP_BANK_TAG = 0x25;
-    public static final int ECAL_BOTTOM_BANK_TAG = 0x27;
-    public static final int SVT_BANK_TAG = 0x3;
+    public static final int ECAL_TOP_BANK_TAG = 0x25; //A.C modified
+    public static final int ECAL_BOTTOM_BANK_TAG = 0x27; //A.C modified
+    public static final int SVT_BANK_TAG = 0x3; //A.C ????
     // These values are put into the number field of the banks.
     // FIXME Bank numbers should actually be sequentially numbered and not hard-coded.
     public static final int SVT_BANK_NUMBER = 1;
@@ -39,7 +39,7 @@
     // The tag for ECal pulse integral data.
     public static final int ECAL_PULSE_INTEGRAL_BANK_TAG = 0xe103;
     // The tag for trigger data.
-    public static final int TRIGGER_BANK_TAG = 0xe106;
+    public static final int TRIGGER_BANK_TAG = 0xe10C; //A.C modified
     public static final int SVT_TOTAL_NUMBER_FPGAS = 8;
     public static final int MC_TIME = 2019686400; //Unix time (in seconds) used for Monte Carlo data - 1/1/2034
 

Modified: java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java
 =============================================================================
--- java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java	(original)
+++ java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java	Thu Oct 30 10:44:14 2014
@@ -7,7 +7,7 @@
 import java.util.logging.Logger;
 
 import org.hps.conditions.deprecated.EcalConditions;
-import org.hps.readout.ecal.TriggerData;
+import org.hps.evio.TriggerData;
 import org.jlab.coda.jevio.BaseStructure;
 import org.jlab.coda.jevio.EvioEvent;
 import org.lcsim.event.EventHeader;

Modified: java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/TriggerData.java
 =============================================================================
--- java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/TriggerData.java	(original)
+++ java/branches/hps-java_ecal-commissioning/evio/src/main/java/org/hps/evio/TriggerData.java	Thu Oct 30 10:44:14 2014
@@ -1,6 +1,9 @@
 package org.hps.evio;
 
 import org.lcsim.event.GenericObject;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  *
@@ -16,63 +19,147 @@
     public static final int AND_TRIG = 6;
     public static final int TIME = 7;
     public static final int TRIG_BANK_SIZE = 8;
+    
+    //Here goes the 5-bit identifiers for the word type
+    public static final int TRIG_HEADER = 0x12;
+    public static final int TRIG_TIME = 0x13;
+    public static final int TRIG_TYPE = 0x15;
+    public static final int CLUSTER_TYPE = 0x14;
+    
     public static final String TRIG_COLLECTION = "TriggerBank";
     private int[] bank;
 
+    private long trigTime;
+    private int eventNum;
+    
+    private int trigType;
+    private int trigTypeData;
+    private int trigTypeTime;
+    
+    private int nCluster,nClusterTop,nClusterBottom;
+    
+    private List<Integer> clusterX,clusterY,clusterE,clusterT,clusterNhits;
+    
     public TriggerData(int[] bank) {
+    	
+    	
+    	 
+        clusterX=new ArrayList<Integer>();
+        clusterY=new ArrayList<Integer>();
+        clusterE=new ArrayList<Integer>();
+    	clusterT=new ArrayList<Integer>();
+    	clusterNhits=new ArrayList<Integer>();
+    
+    	trigTime=0;
+    	trigType=-1;
+    	trigTypeData=0;
+    	
+    	nCluster=nClusterTop=nClusterBottom=0;
+    	
         this.bank = bank;
+        this.decodeTriggerBank();
         
         
+    }
+    	
+    private void decodeTriggerBank(){
+    	/*A. Celentano: decode here the trigger bank*/
+    	/*We do not need to handle block header, block trayler since these are disentagled in the secondary CODA readout list*/
+    	int this_word;
+    	int this_clusterX,this_clusterY,this_clusterE,this_clusterT,this_clusterNhits;
+    	
+    
+    	
+        for (int ii=0;ii<bank.length;ii++){
+        	this_word=bank[ii];
+        	
+        	//event header
+        	if (((this_word>>27)&(0x1f))==TRIG_HEADER){
+        		eventNum=this_word&0x7FFFFFF;
+        	}
+        	//trigger time
+        	else if    (((this_word>>27)&(0x1f))==TRIG_TIME){
+        		trigTime=(bank[ii+1]<<24)|(this_word&0xffffff);        		
+        	}
+        	//trigger type
+        	else if (((this_word>>27)&(0x1f))==TRIG_TYPE){
+        		trigType=(this_word>>23)&0xf; //this is the trigbit, from 0 to 7
+        		trigTypeData=(this_word>>16)&0x7f;
+        		trigTypeTime=(this_word>>16)&0x3ff;
+            }
+        	//cluster 
+        	else if (((this_word>>27)&(0x1f))==CLUSTER_TYPE){
+        	    this_clusterNhits=(this_word>>23)&0xf;
+        	    clusterNhits.add(this_clusterNhits);
+        	    
+        	    this_clusterE=(this_word>>10)&0x1fff;
+        	    clusterE.add(this_clusterE);
+        	   
+        	    this_clusterY=(this_word>>6)&0xf;
+        	    clusterY.add(this_clusterY);
+        	    if (this_clusterY>0) nClusterTop++;
+        	    else if (this_clusterY<0) nClusterBottom++;
+        	    
+        	    this_clusterX=(this_word)&0x3f;
+        	    clusterX.add(this_clusterX);
+        	    
+        	    this_clusterT=(bank[ii+1])&0x3ff;
+        	    clusterT.add(this_clusterT);
+        	    
+        		nCluster++;
+        	}
         
-    }
-
-    public int getTime() {
-        return getIntVal(TIME);
-    }
+        }    	
+    }
+    
+    public long getTime() {      
+    	return trigTime;
+   	}
 
     public int getOrTrig() {
-        return getIntVal(OR_TRIG);
+        return 0;
     }
 
     public int getTopTrig() {
-        return getIntVal(TOP_TRIG);
+        return 0;
     }
 
     public int getBotTrig() {
-        return getIntVal(BOT_TRIG);
+        return 0;
     }
 
     public int getAndTrig() {
-        return getIntVal(AND_TRIG);
+        return 0;
     }
 
     public int[] getBank() {
         return bank;
     }
 
-    public static int getTime(GenericObject object) {
-        return object.getIntVal(TIME);
+    public static long getTime(GenericObject object) {
+        return ((TriggerData)object).getTime();
     }
 
     public static int getOrTrig(GenericObject object) {
-        return object.getIntVal(OR_TRIG);
+        return ((TriggerData)object).getOrTrig();
     }
 
     public static int getTopTrig(GenericObject object) {
-        return object.getIntVal(TOP_TRIG);
+    	return ((TriggerData)object).getTopTrig();
     }
 
     public static int getBotTrig(GenericObject object) {
-        return object.getIntVal(BOT_TRIG);
+    	return ((TriggerData)object).getBotTrig();
     }
 
     public static int getAndTrig(GenericObject object) {
-        return object.getIntVal(AND_TRIG);
+    	return ((TriggerData)object).getAndTrig();
     }
 
     public static int[] getBank(GenericObject object) {
-        int[] bank = new int[8];
-        for (int i = 0; i < 8; i++) {
+        int N=((TriggerData)object).bank.length;
+    	int[] bank = new int[N];
+        for (int i = 0; i < N; i++) {
             bank[i] = object.getIntVal(i);
         }
         return bank;
@@ -80,7 +167,7 @@
 
     @Override
     public int getNInt() {
-        return TRIG_BANK_SIZE;
+        return bank.length;
     }
 
     @Override