@@ -42,6 +42,42 @@ public class CodaEventDecoder {
4242
4343 public CodaEventDecoder (){}
4444
45+ public JsonObject getEpicsData (){
46+ return this .epicsData ;
47+ }
48+
49+ public List <Integer > getTriggerWords (){
50+ return this .triggerWords ;
51+ }
52+
53+ public int getRunNumber (){
54+ return this .runNumber ;
55+ }
56+
57+ public int getEventNumber (){
58+ return this .eventNumber ;
59+ }
60+
61+ public int getUnixTime (){
62+ return this .unixTime ;
63+ }
64+
65+ public long getTimeStamp () {
66+ return this .timeStamp ;
67+ }
68+
69+ public byte getHelicityLevel3 () {
70+ return this .helicityLevel3 ;
71+ }
72+
73+ public long getTriggerBits () {
74+ return triggerBits ;
75+ }
76+
77+ public void setTriggerBits (long triggerBits ) {
78+ this .triggerBits = triggerBits ;
79+ }
80+
4581 /**
4682 * Load map by crate(?).
4783 *
@@ -95,61 +131,13 @@ public List<DetectorDataDgtz> getDataEntries(EvioDataEvent event){
95131 return rawEntries ;
96132 }
97133
98- public void setTimeStamp (EvioDataEvent event ) {
99-
100- long ts = -1 ;
101-
102- List <DetectorDataDgtz > tiEntries = this .getDataEntries_TI (event );
103-
104- if (tiEntries .size ()==1 ) {
105- ts = tiEntries .get (0 ).getTimeStamp ();
106- }
107- else if (tiEntries .size ()>1 ) {
108- // check sychronization
109- boolean tiSync =true ;
110- int i0 = -1 ;
111- // set reference timestamp from first entry which is not the tiMaster nor PCIE:
112- for (int i =0 ; i <tiEntries .size (); i ++) {
113- if (tiEntries .get (i ).getDescriptor ().getCrate () != this .tiMaster ) {
114- if (!PCIE_ROCS .contains (tiEntries .get (i ).getDescriptor ().getCrate ())) {
115- i0 = i ;
116- break ;
117- }
118- }
119- }
120- for (int i =0 ; i <tiEntries .size (); i ++) {
121- long deltaTS = 0 ;
122- long offsetT = 0 ;
123- // Allow/require 5-click offset for PCIE ROCs:
124- if ( PCIE_ROCS .contains (tiEntries .get (i ).getDescriptor ().getCrate () )) offsetT = 5 ;
125- // Add 1-click tolerance for "TI master" (FIXME: this should be an offset too(?)):
126- if (tiEntries .get (i ).getDescriptor ().getCrate ()==this .tiMaster ) deltaTS = deltaTS + 1 ;
127- if (Math .abs (tiEntries .get (i ).getTimeStamp ()-offsetT -tiEntries .get (i0 ).getTimeStamp ())>deltaTS ) {
128- tiSync =false ;
129- if (this .timeStampErrors <100 ) {
130- System .err .println ("WARNING: mismatch in TI time stamps: crate "
131- + tiEntries .get (i ).getDescriptor ().getCrate () + " reports "
132- + tiEntries .get (i ).getTimeStamp () + " instead of the " + tiEntries .get (i0 ).getTimeStamp ()
133- + " from crate " + tiEntries .get (i0 ).getDescriptor ().getCrate ());
134- }
135- else if (this .timeStampErrors ==100 ) {
136- System .err .println ("WARNING: reached the maximum number of timeStamp errors (100), supressing future warnings." );
137- }
138- this .timeStampErrors ++;
139- }
140- }
141- if (tiSync ) ts = tiEntries .get (i0 ).getTimeStamp ();
142- }
143- this .timeStamp = ts ;
144- }
145-
146134 /**
147135 * returns list of decoded data in the event for given crate.
148136 * @param event
149137 * @param crate
150138 * @return
151139 */
152- public List <DetectorDataDgtz > getDataEntries (EvioDataEvent event , int crate ){
140+ private List <DetectorDataDgtz > getDataEntries (EvioDataEvent event , int crate ){
153141 List <DetectorDataDgtz > bankEntries = new ArrayList <>();
154142 EvioTreeBranch cbranch = branchMap .getOrDefault (crate , null );
155143 if (cbranch == null ) return null ;
@@ -201,7 +189,55 @@ public List<DetectorDataDgtz> getDataEntries(EvioDataEvent event, int crate){
201189 return bankEntries ;
202190 }
203191
204- public void readHeaderBank (Integer crate , EvioNode node , EvioDataEvent event ){
192+ private void setTimeStamp (EvioDataEvent event ) {
193+
194+ long ts = -1 ;
195+
196+ List <DetectorDataDgtz > tiEntries = this .getDataEntries_TI (event );
197+
198+ if (tiEntries .size ()==1 ) {
199+ ts = tiEntries .get (0 ).getTimeStamp ();
200+ }
201+ else if (tiEntries .size ()>1 ) {
202+ // check sychronization
203+ boolean tiSync =true ;
204+ int i0 = -1 ;
205+ // set reference timestamp from first entry which is not the tiMaster nor PCIE:
206+ for (int i =0 ; i <tiEntries .size (); i ++) {
207+ if (tiEntries .get (i ).getDescriptor ().getCrate () != this .tiMaster ) {
208+ if (!PCIE_ROCS .contains (tiEntries .get (i ).getDescriptor ().getCrate ())) {
209+ i0 = i ;
210+ break ;
211+ }
212+ }
213+ }
214+ for (int i =0 ; i <tiEntries .size (); i ++) {
215+ long deltaTS = 0 ;
216+ long offsetT = 0 ;
217+ // Allow/require 5-click offset for PCIE ROCs:
218+ if ( PCIE_ROCS .contains (tiEntries .get (i ).getDescriptor ().getCrate () )) offsetT = 5 ;
219+ // Add 1-click tolerance for "TI master" (FIXME: this should be an offset too(?)):
220+ if (tiEntries .get (i ).getDescriptor ().getCrate ()==this .tiMaster ) deltaTS = deltaTS + 1 ;
221+ if (Math .abs (tiEntries .get (i ).getTimeStamp ()-offsetT -tiEntries .get (i0 ).getTimeStamp ())>deltaTS ) {
222+ tiSync =false ;
223+ if (this .timeStampErrors <100 ) {
224+ System .err .println ("WARNING: mismatch in TI time stamps: crate "
225+ + tiEntries .get (i ).getDescriptor ().getCrate () + " reports "
226+ + tiEntries .get (i ).getTimeStamp () + " instead of the " + tiEntries .get (i0 ).getTimeStamp ()
227+ + " from crate " + tiEntries .get (i0 ).getDescriptor ().getCrate ());
228+ }
229+ else if (this .timeStampErrors ==100 ) {
230+ System .err .println ("WARNING: reached the maximum number of timeStamp errors (100), supressing future warnings." );
231+ }
232+ this .timeStampErrors ++;
233+ }
234+ }
235+ if (tiSync ) ts = tiEntries .get (i0 ).getTimeStamp ();
236+ }
237+ this .timeStamp = ts ;
238+ }
239+
240+ private void readHeaderBank (Integer crate , EvioNode node , EvioDataEvent event ){
205241
206242 if (node .getDataTypeObj ()==DataType .INT32 ||node .getDataTypeObj ()==DataType .UINT32 ){
207243 try {
@@ -230,7 +266,7 @@ else if ((intData[7]>>1 & 0x1) == 0) {
230266 }
231267 }
232268
233- public void getDataEntries_EPICS (EvioDataEvent event ){
269+ private void getDataEntries_EPICS (EvioDataEvent event ){
234270 epicsData = new JsonObject ();
235271 for (EvioTreeBranch branch : branchMap .values ()){
236272 for (EvioNode node : branch .getNodes ()){
@@ -335,7 +371,7 @@ public HelicityDecoderData getDataEntries_HelicityDecoder(EvioDataEvent event){
335371 return data ;
336372 }
337373
338- public List <DetectorDataDgtz > getDataEntries_Scalers (EvioDataEvent event ){
374+ private List <DetectorDataDgtz > getDataEntries_Scalers (EvioDataEvent event ){
339375
340376 List <DetectorDataDgtz > scalerEntries = new ArrayList <>();
341377 for (int crate : branchMap .keySet ()) {
@@ -418,7 +454,7 @@ else if(node.getTag()==57621 && loop>=5) {
418454 * @param event
419455 * @return
420456 */
421- public List <DetectorDataDgtz > getDataEntries_TI (EvioDataEvent event ){
457+ private List <DetectorDataDgtz > getDataEntries_TI (EvioDataEvent event ){
422458
423459 List <DetectorDataDgtz > tiEntries = new ArrayList <>();
424460 for (int crate : branchMap .keySet ()) {
@@ -456,7 +492,7 @@ else if(node.getDataLength()==7) { // New format Dec 1 2017 (run 1701)
456492 return tiEntries ;
457493 }
458494
459- public List <DetectorDataDgtz > getDataEntries_VTP (EvioDataEvent event ){
495+ private List <DetectorDataDgtz > getDataEntries_VTP (EvioDataEvent event ){
460496 List <DetectorDataDgtz > vtpEntries = new ArrayList <>();
461497 for (int crate : branchMap .keySet ()) {
462498 for (EvioNode node : branchMap .get (crate ).getNodes ()){
@@ -480,7 +516,7 @@ public List<DetectorDataDgtz> getDataEntries_VTP(EvioDataEvent event){
480516 * @param event
481517 * @return
482518 */
483- public List <DetectorDataDgtz > getDataEntries_TDC (EvioDataEvent event ){
519+ private List <DetectorDataDgtz > getDataEntries_TDC (EvioDataEvent event ){
484520 List <DetectorDataDgtz > tdcEntries = new ArrayList <>();
485521 for (int crate : branchMap .keySet ()) {
486522 for (EvioNode node : branchMap .get (crate ).getNodes ()){
@@ -505,14 +541,12 @@ public List<FADCData> getADCEntries(EvioDataEvent event){
505541 List <FADCData > entries = new ArrayList <>();
506542 for (EvioTreeBranch branch : branchMap .values ()){
507543 List <FADCData > list = this .getADCEntries (event ,branch .getTag ());
508- if (list != null ){
509- entries .addAll (list );
510- }
544+ if (list != null ) entries .addAll (list );
511545 }
512546 return entries ;
513547 }
514548
515- public List <FADCData > getADCEntries (EvioDataEvent event , int crate ){
549+ private List <FADCData > getADCEntries (EvioDataEvent event , int crate ){
516550 List <FADCData > entries = new ArrayList <>();
517551 EvioTreeBranch cbranch = branchMap .getOrDefault (crate , null );
518552 if (cbranch == null ) return null ;
@@ -524,56 +558,18 @@ public List<FADCData> getADCEntries(EvioDataEvent event, int crate){
524558 return entries ;
525559 }
526560
527- public List <FADCData > getADCEntries (EvioDataEvent event , int crate , int tagid ){
561+ private List <FADCData > getADCEntries (EvioDataEvent event , int crate , int tagid ){
528562 List <FADCData > adc = new ArrayList <>();
529563 EvioTreeBranch cbranch = branchMap .getOrDefault (crate , null );
530564 if (cbranch == null ) return null ;
531565 for (EvioNode node : cbranch .getNodes ()){
532566 if (node .getTag ()==tagid ){
533- // This is regular integrated pulse mode, used for FTOF
534- // FTCAL and EC/PCAL
535567 return CodaDecoders .getADCEntries_Tag (crate , node , event ,tagid );
536568 }
537569 }
538570 return adc ;
539571 }
540572
541- public JsonObject getEpicsData (){
542- return this .epicsData ;
543- }
544-
545- public List <Integer > getTriggerWords (){
546- return this .triggerWords ;
547- }
548-
549- public int getRunNumber (){
550- return this .runNumber ;
551- }
552-
553- public int getEventNumber (){
554- return this .eventNumber ;
555- }
556-
557- public int getUnixTime (){
558- return this .unixTime ;
559- }
560-
561- public long getTimeStamp () {
562- return this .timeStamp ;
563- }
564-
565- public byte getHelicityLevel3 () {
566- return this .helicityLevel3 ;
567- }
568-
569- public long getTriggerBits () {
570- return triggerBits ;
571- }
572-
573- public void setTriggerBits (long triggerBits ) {
574- this .triggerBits = triggerBits ;
575- }
576-
577573 public static void main (String [] args ){
578574 EvioSource reader = new EvioSource ();
579575 reader .open ("/Users/devita/clas_004013.evio.1000" );
0 commit comments