RawAnitaHeader.cxx
1 
10 #include "RawAnitaHeader.h"
11 #include "AnitaPacketUtil.h"
12 #include "AnitaVersion.h"
13 #include <assert.h>
14 #include "TMath.h"
15 #include <iostream>
16 #include <fstream>
17 #include <cstring>
18 ClassImp(RawAnitaHeader);
19 
21 {
22  //Default Constructor
23 }
24 
26  //Default Destructor
27 }
28 
29 
30 RawAnitaHeader::RawAnitaHeader(AnitaEventHeader_t *hdPtr, Int_t trun, UInt_t trealTime,
31  UInt_t ttriggerTime, UInt_t ttriggerTimeNs, Int_t tgoodTimeFlag)
32 {
33  simplePacketCheck(&(hdPtr->gHdr),PACKET_HD);
34 
35  payloadTime=hdPtr->unixTime;
37  gpsSubTime=hdPtr->gpsSubTime;
38  turfEventId=hdPtr->turfEventId;
39  eventNumber=hdPtr->eventNumber;
40  calibStatus=hdPtr->calibStatus;
41  priority=hdPtr->priority;
43  otherFlag=hdPtr->otherFlag;
44  errorFlag=hdPtr->errorFlag;
46  // nadirAntTrigMask=hdPtr->nadirAntTrigMask;
47  l2TrigMask=hdPtr->l2TrigMask;
48  // l2TrigMaskH=hdPtr->l1TrigMaskH;
49  phiTrigMask=hdPtr->phiTrigMask;
51  trigType=hdPtr->turfio.trigType;
53  trigNum=hdPtr->turfio.trigNum;
54  trigTime=hdPtr->turfio.trigTime;
55  c3poNum=hdPtr->turfio.c3poNum;
56  ppsNum=hdPtr->turfio.ppsNum;
57  deadTime=hdPtr->turfio.deadTime;
59  turfioReserved=hdPtr->turfio.reserved[0];
60  l3TrigPattern=hdPtr->turfio.l3TrigPattern;
62  // l3TrigPatternH=hdPtr->turfio.l3TrigPatternH;
63  // memcpy(reserved,hdPtr->reserved,2*sizeof(UChar_t));
64  run=trun;
65  realTime=trealTime;
66  triggerTime=ttriggerTime;
67  triggerTimeNs=ttriggerTimeNs;
68  goodTimeFlag=tgoodTimeFlag;
69 
70 
73  l1TrigMaskOffline = 0; //should be unneeded in A4
74  l1TrigMaskHOffline = 0; //should be unneeded in A4
75 
76  //Prioritizer stuff
77  peakThetaBin=hdPtr->peakThetaBin;
78  imagePeak=hdPtr->imagePeak;
79  coherentSumPeak=hdPtr->coherentSumPeak;
81 }
82 
83 
84 RawAnitaHeader::RawAnitaHeader(AnitaEventHeaderVer40_t *hdPtr, Int_t trun, UInt_t trealTime,
85  UInt_t ttriggerTime, UInt_t ttriggerTimeNs, Int_t tgoodTimeFlag)
86 {
87  if(hdPtr->gHdr.code!=PACKET_HD ||
88  hdPtr->gHdr.verId!=40 ||
89  hdPtr->gHdr.numBytes!=sizeof(AnitaEventHeaderVer40_t)) {
90  std::cerr << "Mismatched packet:\t" << packetCodeAsString(PACKET_HD) << " (Ver40)\n"
91  << "code:\t" << hdPtr->gHdr.code << "\t" << PACKET_HD
92  << "\nversion:\t" << (int)hdPtr->gHdr.verId
93  << "\t" << (int)40
94  << "\nsize:\t" << hdPtr->gHdr.numBytes << "\t"
95  << sizeof(AnitaEventHeaderVer40_t) << std::endl;
96  }
97 
98  payloadTime=hdPtr->unixTime;
100  gpsSubTime=hdPtr->gpsSubTime;
101  turfEventId=hdPtr->turfEventId;
102  eventNumber=hdPtr->eventNumber;
103  calibStatus=hdPtr->calibStatus;
104  priority=hdPtr->priority;
106  otherFlag=hdPtr->otherFlag;
107  errorFlag=hdPtr->errorFlag;
108  surfSlipFlag=hdPtr->surfSlipFlag;
109  // nadirAntTrigMask=hdPtr->nadirAntTrigMask;
110  l2TrigMask=hdPtr->l1TrigMask;
111  // l2TrigMaskH=hdPtr->l1TrigMaskH;
112  phiTrigMask=hdPtr->phiTrigMask;
113  phiTrigMaskH=hdPtr->phiTrigMaskH;
114  trigType=hdPtr->turfio.trigType;
116  trigNum=hdPtr->turfio.trigNum;
117  trigTime=hdPtr->turfio.trigTime;
118  c3poNum=hdPtr->turfio.c3poNum;
119  ppsNum=hdPtr->turfio.ppsNum;
120  deadTime=hdPtr->turfio.deadTime;
122  turfioReserved=hdPtr->turfio.reserved[0];
123  l3TrigPattern=hdPtr->turfio.l3TrigPattern;
124  l3TrigPatternH=hdPtr->turfio.l3TrigPatternH;
125  // memcpy(reserved,hdPtr->reserved,2*sizeof(UChar_t));
126  run=trun;
127  realTime=trealTime;
128  triggerTime=ttriggerTime;
129  triggerTimeNs=ttriggerTimeNs;
130  goodTimeFlag=tgoodTimeFlag;
131 
134  l1TrigMaskOffline = 0; //should be unneeded in A4
135  l1TrigMaskHOffline = 0; //should be unneeded in A4
136 
137 
138  //Prioritizer stuff
139  peakThetaBin=hdPtr->peakThetaBin;
140  imagePeak=hdPtr->imagePeak;
141  coherentSumPeak=hdPtr->coherentSumPeak;
143 }
144 
145 
146 
147 RawAnitaHeader::RawAnitaHeader(AnitaEventHeaderVer33_t *hdPtr, Int_t trun, UInt_t trealTime,
148  UInt_t ttriggerTime, UInt_t ttriggerTimeNs, Int_t tgoodTimeFlag)
149 {
150  if(hdPtr->gHdr.code!=PACKET_HD ||
151  hdPtr->gHdr.verId!=33 ||
152  hdPtr->gHdr.numBytes!=sizeof(AnitaEventHeaderVer33_t)) {
153  std::cerr << "Mismatched packet:\t" << packetCodeAsString(PACKET_HD) << " (Ver33)\n"
154  << "code:\t" << hdPtr->gHdr.code << "\t" << PACKET_HD
155  << "\nversion:\t" << (int)hdPtr->gHdr.verId
156  << "\t" << (int)VER_EVENT_HEADER
157  << "\nsize:\t" << hdPtr->gHdr.numBytes << "\t"
158  << sizeof(AnitaEventHeader_t) << std::endl;
159  }
160 
161  payloadTime=hdPtr->unixTime;
162  payloadTimeUs=hdPtr->unixTimeUs;
163  gpsSubTime=hdPtr->gpsSubTime;
164  turfEventId=hdPtr->turfEventId;
165  eventNumber=hdPtr->eventNumber;
166  calibStatus=hdPtr->calibStatus;
167  priority=hdPtr->priority;
169  otherFlag=hdPtr->otherFlag;
170  errorFlag=hdPtr->errorFlag;
171  surfSlipFlag=hdPtr->surfSlipFlag;
172  // nadirAntTrigMask=hdPtr->nadirAntTrigMask;
173  l2TrigMask=hdPtr->l1TrigMask;
174  l2TrigMaskH=hdPtr->l1TrigMaskH;
175  phiTrigMask=hdPtr->phiTrigMask;
176  phiTrigMaskH=hdPtr->phiTrigMaskH;
177  trigType=hdPtr->turfio.trigType;
179  trigNum=hdPtr->turfio.trigNum;
180  trigTime=hdPtr->turfio.trigTime;
181  c3poNum=hdPtr->turfio.c3poNum;
182  ppsNum=hdPtr->turfio.ppsNum;
183  deadTime=hdPtr->turfio.deadTime;
185  turfioReserved=hdPtr->turfio.reserved[0];
186  l3TrigPattern=hdPtr->turfio.l3TrigPattern;
187  l3TrigPatternH=hdPtr->turfio.l3TrigPatternH;
188  // memcpy(reserved,hdPtr->reserved,2*sizeof(UChar_t));
189  run=trun;
190  realTime=trealTime;
191  triggerTime=ttriggerTime;
192  triggerTimeNs=ttriggerTimeNs;
193  goodTimeFlag=tgoodTimeFlag;
194 
195 
198  l1TrigMaskOffline = l2TrigMask;
200 
201 
202  //Prioritizer stuff
203  peakThetaBin=hdPtr->peakThetaBin;
204  imagePeak=hdPtr->imagePeak;
205  coherentSumPeak=hdPtr->coherentSumPeak;
207 }
208 
209 
210 
211 RawAnitaHeader::RawAnitaHeader(AnitaEventHeaderVer30_t *hdPtr, Int_t trun, UInt_t trealTime,
212  UInt_t ttriggerTime, UInt_t ttriggerTimeNs, Int_t tgoodTimeFlag)
213 {
214  if(hdPtr->gHdr.code!=PACKET_HD ||
215  hdPtr->gHdr.verId!=30 ||
216  hdPtr->gHdr.numBytes!=sizeof(AnitaEventHeaderVer30_t)) {
217  std::cerr << "Mismatched packet:\t" << packetCodeAsString(PACKET_HD) << "\n"
218  << "code:\t" << hdPtr->gHdr.code << "\t" << PACKET_HD
219  << "\nversion:\t" << (int)hdPtr->gHdr.verId
220  << "\t" << (int)VER_EVENT_HEADER
221  << "\nsize:\t" << hdPtr->gHdr.numBytes << "\t"
222  << sizeof(AnitaEventHeader_t) << std::endl;
223  }
224 
225  payloadTime=hdPtr->unixTime;
226  payloadTimeUs=hdPtr->unixTimeUs;
227  gpsSubTime=hdPtr->gpsSubTime;
228  turfEventId=hdPtr->turfEventId;
229  eventNumber=hdPtr->eventNumber;
230  calibStatus=hdPtr->calibStatus;
231  priority=hdPtr->priority;
233  otherFlag=hdPtr->otherFlag;
234  errorFlag=hdPtr->errorFlag;
235  surfSlipFlag=hdPtr->surfSlipFlag;
237  antTrigMask=hdPtr->antTrigMask;
238  phiTrigMask=hdPtr->phiTrigMask;
239  trigType=hdPtr->turfio.trigType;
241  trigNum=hdPtr->turfio.trigNum;
242  trigTime=hdPtr->turfio.trigTime;
243  c3poNum=hdPtr->turfio.c3poNum;
244  ppsNum=hdPtr->turfio.ppsNum;
245  deadTime=hdPtr->turfio.deadTime;
247  turfioReserved=hdPtr->turfio.reserved;
248  upperL1TrigPattern=hdPtr->turfio.upperL1TrigPattern;
249  lowerL1TrigPattern=hdPtr->turfio.lowerL1TrigPattern;
250  upperL2TrigPattern=hdPtr->turfio.upperL2TrigPattern;
251  lowerL2TrigPattern=hdPtr->turfio.lowerL2TrigPattern;
252  l3TrigPattern=hdPtr->turfio.l3TrigPattern;
253  memcpy(reserved,hdPtr->reserved,2*sizeof(UChar_t));
254  memcpy(otherTrigPattern,hdPtr->turfio.otherTrigPattern,3*sizeof(UShort_t));
255  nadirL1TrigPattern=hdPtr->turfio.nadirL1TrigPattern;
257  run=trun;
258  realTime=trealTime;
259  triggerTime=ttriggerTime;
260  triggerTimeNs=ttriggerTimeNs;
261  goodTimeFlag=tgoodTimeFlag;
262 }
263 
264 
265 
266 
267 RawAnitaHeader::RawAnitaHeader(AnitaEventHeaderVer13_t *hdPtr, Int_t trun, UInt_t trealTime,
268  UInt_t ttriggerTime, UInt_t ttriggerTimeNs, Int_t tgoodTimeFlag)
269 {
270  if(hdPtr->gHdr.code!=PACKET_HD ||
271  hdPtr->gHdr.verId!=13 ||
272  hdPtr->gHdr.numBytes!=sizeof(AnitaEventHeaderVer13_t)) {
273  std::cerr << "Mismatched packet:\t" << packetCodeAsString(PACKET_HD) << "\n"
274  << "code:\t" << hdPtr->gHdr.code << "\t" << PACKET_HD
275  << "\nversion:\t" << hdPtr->gHdr.verId
276  << "\t" << 13
277  << "\nsize:\t" << hdPtr->gHdr.numBytes << "\t"
278  << sizeof(AnitaEventHeaderVer13_t) << std::endl;
279  }
280 
281  payloadTime=hdPtr->unixTime;
282  payloadTimeUs=hdPtr->unixTimeUs;
283  gpsSubTime=hdPtr->gpsSubTime;
284  turfEventId=hdPtr->turfEventId;
285  eventNumber=hdPtr->eventNumber;
286  calibStatus=hdPtr->calibStatus;
287  priority=hdPtr->priority;
289  otherFlag=hdPtr->otherFlag;
290  errorFlag=hdPtr->errorFlag;
291  surfSlipFlag=hdPtr->surfSlipFlag;
293  antTrigMask=hdPtr->antTrigMask;
294  phiTrigMask=hdPtr->phiTrigMask;
295  phiTrigMaskH=0;//hdPtr->phiTrigMaskH;
296  trigType=hdPtr->turfio.trigType;
298  trigNum=hdPtr->turfio.trigNum;
299  trigTime=hdPtr->turfio.trigTime;
300  c3poNum=hdPtr->turfio.c3poNum;
301  ppsNum=hdPtr->turfio.ppsNum;
302  deadTime=hdPtr->turfio.deadTime;
304  turfioReserved=hdPtr->turfio.reserved;
305  upperL1TrigPattern=hdPtr->turfio.upperL1TrigPattern;
306  lowerL1TrigPattern=hdPtr->turfio.lowerL1TrigPattern;
307  upperL2TrigPattern=hdPtr->turfio.upperL2TrigPattern;
308  lowerL2TrigPattern=hdPtr->turfio.lowerL2TrigPattern;
309  l3TrigPattern=hdPtr->turfio.l3TrigPattern;
310  memcpy(reserved,hdPtr->reserved,2*sizeof(UChar_t));
311  memcpy(otherTrigPattern,hdPtr->turfio.otherTrigPattern,3*sizeof(UShort_t));
312  nadirL1TrigPattern=hdPtr->turfio.nadirL1TrigPattern;
314  run=trun;
315  realTime=trealTime;
316  triggerTime=ttriggerTime;
317  triggerTimeNs=ttriggerTimeNs;
318  goodTimeFlag=tgoodTimeFlag;
319 }
320 
321 
322 RawAnitaHeader::RawAnitaHeader(AnitaEventHeaderVer12_t *hdPtr, Int_t trun, UInt_t trealTime,
323  UInt_t ttriggerTime, UInt_t ttriggerTimeNs, Int_t tgoodTimeFlag)
324 {
325  if(hdPtr->gHdr.code!=PACKET_HD ||
326  hdPtr->gHdr.verId!=12 ||
327  hdPtr->gHdr.numBytes!=sizeof(AnitaEventHeaderVer12_t)) {
328  std::cerr << "Mismatched packet:\t" << packetCodeAsString(PACKET_HD) << "\n"
329  << "code:\t" << hdPtr->gHdr.code << "\t" << PACKET_HD
330  << "\nversion:\t" << hdPtr->gHdr.verId
331  << "\t" << 12
332  << "\nsize:\t" << hdPtr->gHdr.numBytes << "\t"
333  << sizeof(AnitaEventHeaderVer12_t) << std::endl;
334  }
335 
336  payloadTime=hdPtr->unixTime;
337  payloadTimeUs=hdPtr->unixTimeUs;
338  gpsSubTime=hdPtr->gpsSubTime;
339  turfEventId=hdPtr->turfEventId;
340  eventNumber=hdPtr->eventNumber;
341  calibStatus=hdPtr->calibStatus;
342  priority=hdPtr->priority;
343  turfUpperWord=hdPtr->turfUpperWord;
344  otherFlag=hdPtr->otherFlag;
345  errorFlag=hdPtr->errorFlag;
346  surfSlipFlag=hdPtr->surfSlipFlag;
347  nadirAntTrigMask=hdPtr->nadirAntTrigMask;
348  antTrigMask=hdPtr->antTrigMask;
349  phiTrigMask=0;
350  phiTrigMaskH=0;
351  trigType=hdPtr->turfio.trigType;
352  l3Type1Count=hdPtr->turfio.l3Type1Count;
353  trigNum=hdPtr->turfio.trigNum;
354  trigTime=hdPtr->turfio.trigTime;
355  c3poNum=hdPtr->turfio.c3poNum;
356  ppsNum=hdPtr->turfio.ppsNum;
357  deadTime=hdPtr->turfio.deadTime;
358  bufferDepth=hdPtr->turfio.bufferDepth;
359  turfioReserved=hdPtr->turfio.reserved;
360  upperL1TrigPattern=hdPtr->turfio.upperL1TrigPattern;
361  lowerL1TrigPattern=hdPtr->turfio.lowerL1TrigPattern;
362  upperL2TrigPattern=hdPtr->turfio.upperL2TrigPattern;
363  lowerL2TrigPattern=hdPtr->turfio.lowerL2TrigPattern;
364  l3TrigPattern=hdPtr->turfio.l3TrigPattern;
365  memset(reserved,0,2*sizeof(UChar_t));
366  memcpy(otherTrigPattern,hdPtr->turfio.otherTrigPattern,3*sizeof(UShort_t));
367  nadirL1TrigPattern=hdPtr->turfio.nadirL1TrigPattern;
368  nadirL2TrigPattern=hdPtr->turfio.nadirL2TrigPattern;
369  run=trun;
370  realTime=trealTime;
371  triggerTime=ttriggerTime;
372  triggerTimeNs=ttriggerTimeNs;
373  goodTimeFlag=tgoodTimeFlag;
374 }
375 
376 
377 
378 RawAnitaHeader::RawAnitaHeader(AnitaEventHeaderVer11_t *hdPtr, Int_t trun, UInt_t trealTime,
379  UInt_t ttriggerTime, UInt_t ttriggerTimeNs, Int_t tgoodTimeFlag)
380 {
381  if(hdPtr->gHdr.code!=PACKET_HD ||
382  hdPtr->gHdr.verId!=11 ||
383  hdPtr->gHdr.numBytes!=sizeof(AnitaEventHeaderVer11_t)) {
384  std::cerr << "Mismatched packet:\t" << packetCodeAsString(PACKET_HD) << "\n"
385  << "code:\t" << hdPtr->gHdr.code << "\t" << PACKET_HD
386  << "\nversion:\t" << hdPtr->gHdr.verId
387  << "\t" << 11
388  << "\nsize:\t" << hdPtr->gHdr.numBytes << "\t"
389  << sizeof(AnitaEventHeaderVer11_t) << std::endl;
390  }
391 
392  payloadTime=hdPtr->unixTime;
393  payloadTimeUs=hdPtr->unixTimeUs;
394  gpsSubTime=hdPtr->gpsSubTime;
395  turfEventId=0;
396  eventNumber=hdPtr->eventNumber;
397  calibStatus=hdPtr->calibStatus;
398  priority=hdPtr->priority;
399  turfUpperWord=hdPtr->turfUpperWord;
400  otherFlag=hdPtr->otherFlag;
401  errorFlag=hdPtr->errorFlag;
402  surfSlipFlag=0;
403  nadirAntTrigMask=hdPtr->nadirAntTrigMask;
404  antTrigMask=hdPtr->antTrigMask;
405  phiTrigMask=0;
406  phiTrigMaskH=0;
407  trigType=hdPtr->turfio.trigType;
408  l3Type1Count=hdPtr->turfio.l3Type1Count;
409  trigNum=hdPtr->turfio.trigNum;
410  trigTime=hdPtr->turfio.trigTime;
411  c3poNum=hdPtr->turfio.c3poNum;
412  ppsNum=hdPtr->turfio.ppsNum;
413  deadTime=hdPtr->turfio.deadTime;
414  bufferDepth=hdPtr->turfio.bufferDepth;
415  turfioReserved=hdPtr->turfio.reserved;
416  upperL1TrigPattern=hdPtr->turfio.upperL1TrigPattern;
417  lowerL1TrigPattern=hdPtr->turfio.lowerL1TrigPattern;
418  upperL2TrigPattern=hdPtr->turfio.upperL2TrigPattern;
419  lowerL2TrigPattern=hdPtr->turfio.lowerL2TrigPattern;
420  l3TrigPattern=hdPtr->turfio.l3TrigPattern;
421  memset(reserved,0,2*sizeof(UChar_t));
422  run=trun;
423  realTime=trealTime;
424  triggerTime=ttriggerTime;
425  triggerTimeNs=ttriggerTimeNs;
426  goodTimeFlag=tgoodTimeFlag;
427 }
428 
429 
430 
431 RawAnitaHeader::RawAnitaHeader(AnitaEventHeaderVer10_t *hdPtr, Int_t trun, UInt_t trealTime,
432  UInt_t ttriggerTime, UInt_t ttriggerTimeNs, Int_t tgoodTimeFlag)
433 {
434  if(hdPtr->gHdr.code!=PACKET_HD ||
435  hdPtr->gHdr.verId!=10 ||
436  hdPtr->gHdr.numBytes!=sizeof(AnitaEventHeaderVer10_t)) {
437  std::cerr << "Mismatched packet:\t" << packetCodeAsString(PACKET_HD) << "\n"
438  << "code:\t" << hdPtr->gHdr.code << "\t" << PACKET_HD
439  << "\nversion:\t" << hdPtr->gHdr.verId
440  << "\t" << 10
441  << "\nsize:\t" << hdPtr->gHdr.numBytes << "\t"
442  << sizeof(AnitaEventHeaderVer10_t) << std::endl;
443  }
444 
445  payloadTime=hdPtr->unixTime;
446  payloadTimeUs=hdPtr->unixTimeUs;
447  gpsSubTime=hdPtr->gpsSubTime;
448  turfEventId=0;
449  eventNumber=hdPtr->eventNumber;
450  calibStatus=hdPtr->calibStatus;
451  priority=hdPtr->priority;
452  turfUpperWord=hdPtr->turfUpperWord;
453  otherFlag=hdPtr->otherFlag;
454  errorFlag=0;
455  surfSlipFlag=0;
457  antTrigMask=hdPtr->antTrigMask;
458  phiTrigMask=0;
459  phiTrigMaskH=0;
460  trigType=hdPtr->turfio.trigType;
461  l3Type1Count=hdPtr->turfio.l3Type1Count;
462  trigNum=hdPtr->turfio.trigNum;
463  trigTime=hdPtr->turfio.trigTime;
464  c3poNum=hdPtr->turfio.c3poNum;
465  ppsNum=hdPtr->turfio.ppsNum;
466  deadTime=hdPtr->turfio.deadTime;
467  bufferDepth=hdPtr->turfio.bufferDepth;
468  turfioReserved=hdPtr->turfio.reserved;
469  upperL1TrigPattern=hdPtr->turfio.upperL1TrigPattern;
470  lowerL1TrigPattern=hdPtr->turfio.lowerL1TrigPattern;
471  upperL2TrigPattern=hdPtr->turfio.upperL2TrigPattern;
472  lowerL2TrigPattern=hdPtr->turfio.lowerL2TrigPattern;
473  l3TrigPattern=hdPtr->turfio.l3TrigPattern;
474  memset(reserved,0,2*sizeof(UChar_t));
475  run=trun;
476  realTime=trealTime;
477  triggerTime=ttriggerTime;
478  triggerTimeNs=ttriggerTimeNs;
479  goodTimeFlag=tgoodTimeFlag;
480 }
481 
482 
484 {
485  static char theString[20];
486  int count=0;
487  sprintf(theString,"None");
488 
489  const char *trigTypes[4]={"RF","PPS1","PPS2","Soft"};
490 
491  for(int i=0;i<4;i++) {
492  if(trigType & (1<<i)) {
493  if(count==0) {
494  strcpy(theString,trigTypes[i]);
495  count++;
496  }
497  else {
498  sprintf(theString,"%s + %s",theString,trigTypes[i]);
499  }
500  }
501  }
502  return theString;
503 }
504 
505 int RawAnitaHeader::getL1MaskOffline( AnitaPol::AnitaPol_t pol) const {
506 
507  //we are not going to be nice
508  assert(AnitaVersion::get() == 3);
509 
510  switch(pol) {
511  case AnitaPol::kVertical:
512  return l1TrigMaskOffline;
514  return l1TrigMaskHOffline;
515  default:
516  return 0;
517  }
518  return 0;
519 }
520 
521 int RawAnitaHeader::getPhiMaskOffline( AnitaPol::AnitaPol_t pol) const {
522  switch(pol) {
523  case AnitaPol::kVertical:
524  return phiTrigMaskOffline;
526  return phiTrigMaskHOffline;
527  default:
528  return 0;
529  }
530  return 0;
531 }
532 
533 
534 
536 
537  switch(pol) {
538  case AnitaPol::kVertical:
539  return l2TrigMask;
541  return l2TrigMaskH;
542  default:
543  return 0;
544  }
545  return 0;
546 }
547 
549  switch(pol) {
550  case AnitaPol::kVertical:
551  return phiTrigMask;
553  return phiTrigMaskH;
554  default:
555  return 0;
556  }
557  return 0;
558 }
559 
560 Int_t RawAnitaHeader::setMask (UShort_t newL2Mask, UShort_t newPhiMask, AnitaPol::AnitaPol_t pol) {
561  // Copied from ANITA-3 branch, not verified for ANITA-4
562  switch(pol) {
563  case AnitaPol::kVertical:
564  l1TrigMaskOffline = l2TrigMask = newL2Mask;
565  phiTrigMaskOffline = phiTrigMask = newPhiMask;
567  l1TrigMaskHOffline = l2TrigMaskH = newL2Mask;
568  phiTrigMaskHOffline = phiTrigMaskH = newPhiMask;
569  default:
570  return -1;
571  }
572  return 0;
573 }
574 
575 Int_t RawAnitaHeader::setTrigPattern (UShort_t newTrigPattern, AnitaPol::AnitaPol_t pol) {
576  // Copied from ANITA-3 branch, not verified for ANITA-4
577  switch(pol) {
578  case AnitaPol::kVertical:
579  l3TrigPattern = newTrigPattern;
581  l3TrigPatternH = newTrigPattern;
582  default:
583  return -1;
584  }
585  return 0;
586 }
587 
588 UShort_t RawAnitaHeader::getL3TrigPattern(AnitaPol::AnitaPol_t pol) const{
590 }
592 {
593  if(phi<0 || phi>=PHI_SECTORS) return -1;
594 // return ((l3TrigPattern&(1<<(phi))) ? 1 :0);
595  switch(pol) {
596  case AnitaPol::kVertical:
597  return ((l3TrigPattern&(1<<(phi))) ? 1 :0);
599  return ((l3TrigPatternH&(1<<phi)) ? 1 : 0);
600  default:
601  return -1;
602  }
603  return -1;
604 
605 }
606 
607 int RawAnitaHeader::isInPhiMaskOffline(int phi, AnitaPol::AnitaPol_t pol) const
608 {
609  if(phi<0 || phi>=PHI_SECTORS) return -1;
610  switch(pol) {
611  case AnitaPol::kVertical:
612  return ((phiTrigMaskOffline&(1<<(phi))) ? 1 :0);
614  return ((phiTrigMaskHOffline&(1<<phi)) ? 1 : 0);
615  default:
616  return -1;
617  }
618  return -1;
619 
620 }
621 int RawAnitaHeader::isInL1MaskOffline(int phi, AnitaPol::AnitaPol_t pol) const
622 {
623 
624 
625  if(phi<0 || phi>=PHI_SECTORS) return -1;
626  switch(pol) {
627  case AnitaPol::kVertical:
628  return ((l1TrigMaskOffline&(1<<(phi))) ? 1 :0);
630  return ((l1TrigMaskHOffline&(1<<phi)) ? 1 : 0);
631  default:
632  return -1;
633  }
634  return -1;
635 
636 }
637 
638 
640 {
641  if(phi<0 || phi>=PHI_SECTORS) return -1;
642  switch(pol) {
643  case AnitaPol::kVertical:
644  return ((phiTrigMask&(1<<(phi))) ? 1 :0);
646  return ((phiTrigMaskH&(1<<phi)) ? 1 : 0);
647  default:
648  return -1;
649  }
650  return -1;
651 
652 }
654 {
655 
656 
657  if(phi<0 || phi>=PHI_SECTORS) return -1;
658  switch(pol) {
659  case AnitaPol::kVertical:
660  return ((l2TrigMask&(1<<(phi))) ? 1 :0);
662  return ((l2TrigMaskH&(1<<phi)) ? 1 : 0);
663  default:
664  return -1;
665  }
666  return -1;
667 
668 }
669 
670 
671 int RawAnitaHeader::isInL2Mask(int phi) const
672 {
673  if(phi<0 || phi>=PHI_SECTORS) return -1;
674  return ((l2TrigMask&(1<<(phi))) ? 1 :0);
675 
676 }
677 
680 {
681  int curBuf=reserved[0]&0xf;
682  switch(curBuf) {
683  case 1: return 0;
684  case 2: return 1;
685  case 4: return 2;
686  case 8: return 3;
687  default: return -1;
688  }
689 }
690 
693 {
694 
695  unsigned int curHolds=(reserved[0]&0xf)>>4;
696  return curHolds;
697 }
698 
701 {
702  int countHolds=0;
703  unsigned int curHolds=(reserved[0]&0xf)>>4;
704  for(int buffer=0;buffer<4;buffer++) {
705  if(curHolds & (1<<buffer))
706  countHolds++;
707  }
708  return countHolds;
709 }
710 
711 Float_t RawAnitaHeader::getPeakThetaDeg() const
712 {
713 #define THETA_RANGE 150
714 #define NUM_BINS_THETA 256
715  //Removing -1
716 
717  return THETA_RANGE*((Float_t)peakThetaBin/NUM_BINS_THETA - 0.5);
718 
719 }
720 
721 Float_t RawAnitaHeader::getPeakThetaRad() const
722 {
723  return getPeakThetaDeg()*TMath::DegToRad();
724 }
725 
726 Float_t RawAnitaHeader::getPeakPhiDeg() const
727 {
728  Int_t phiInd2=(prioritizerStuff&0x7ff)>>1;
729  Int_t phiInd=(phiInd2&0x3f);
730  Int_t phiSector=(phiInd2>>6);
731  const Float_t phiArrayDeg[NUM_SEAVEYS]={-45,-22.5,0,22.5,45,67.5,90,112.5,135,157.5,180,
732  202.5,225,247.5,270,292.5,315,337.5,
733  0,22.5,45,67.5,90,112.5,135,157.5,180,
734  202.5,225,247.5,270,292.5,315,337.5,
735  0,22.5,45,67.5,90,112.5,135,157.5,180,
736  202.5,225,247.5,270,292.5};
737  // const Float_t phiArray[NUM_SEAVEYS]={0.454076, 0.848837, 1.21946, 1.5909, 1.99256, 2.34755,
738  // 2.70865, 3.069, 3.47166, 3.87134, 4.26593, 4.67822, 5.10608,
739  // 5.51456, 5.89388, 0.044416,
740  // 0.387236, 0.778985, 1.17058, 1.56246, 1.965, 2.36015,
741  // 2.74449, 3.13392, 3.5209, 3.92214, 4.31697, 4.71495,
742  // 5.10387, 5.4971, 5.88069, 6.28301,
743  // 0.341474, 0.785398, 1.15377, 1.5708, 1.95866, 2.3562,
744  // 2.75883, 3.14159, 3.52916, 3.92699, 4.34619, 4.71239,
745  // 5.1258, 5.49779, 5.87493, 2.30671e-06};
746 #define NUM_BINS_PHI 64
747 #define PHI_RANGE 22.5
748  return phiArrayDeg[phiSector] + PHI_RANGE*((Float_t)phiInd/NUM_BINS_PHI - 0.5);
749 }
750 
751 
752 Float_t RawAnitaHeader::getPeakPhiRad() const
753 {
754  return getPeakPhiDeg()*TMath::DegToRad();
755 }
756 
757 Float_t RawAnitaHeader::getImagePeak() const
758 {
759  return Float_t(imagePeak)/65535.;
760 
761 }
762 
763 Float_t RawAnitaHeader::getCoherentSumPeak() const
764 {
765  return coherentSumPeak;
766 }
767 
768 AnitaPol::AnitaPol_t RawAnitaHeader::getPeakPol() const
769 {
770  if(prioritizerStuff&0x1)
771  return AnitaPol::kVertical;
772  return AnitaPol::kHorizontal;
773 }
774 
775 Int_t RawAnitaHeader::getAboveThresholdFlag() const
776 {
777  return ((prioritizerStuff & 0x1000)>>12);
778 }
779 Int_t RawAnitaHeader::getBinToBinIncreaseFlag() const
780 {
781  return ((prioritizerStuff & 0x2000)>>13);
782 }
783 Int_t RawAnitaHeader::getSaturationFlag() const
784 {
785  return ((prioritizerStuff & 0x4000)>>14);
786 }
787 
788 
791  return (trigType & (1 << 0));
792 }
793 
796  return (trigType & (1 << 1));
797 }
798 
801  return (trigType & (1 << 2));
802 }
803 
806  return (trigType & (1 << 3));
807 }
unsigned short deadTime
fraction = deadTime/64400
Definition: oldStructs.h:30
int isInL2Mask(int phi) const
Returns 1 if given phi-ring had l1 trigger.
UShort_t l3TrigPatternH
Bit mask for l3 global triggers. eg. if the bit 1 (the lowest bit) is active it means that phi sector...
unsigned short ppsNum
1PPS
int getL1Mask(AnitaPol::AnitaPol_t pol) const
Get&#39;s the l1 Mask. In A4 this is the same as l2 mask.
unsigned char nadirAntTrigMask
8-bit nadir phi mask (from TURF)
Definition: oldStructs.h:104
TurfioStructVer13_t turfio
The X byte TURFIO data.
Definition: oldStructs.h:744
UShort_t lowerL2TrigPattern
Bit mask for lower ring l2 cluster triggers. eg. if the bit 1 (the lowest bit) is active it means the...
UChar_t surfSlipFlag
Sync Slip between SURF 2-9 and SURF 1.
UChar_t reserved[2]
Reserved bytes — Deprecated.
int gpsSubTime
GPS timestamp.
Definition: oldStructs.h:201
UChar_t errorFlag
Error Flag.
int getCurrentTurfBuffer() const
Returns the current TURF buffer number (0, 1, 2 or 3);.
unsigned short ppsNum
1PPS
Definition: oldStructs.h:697
UInt_t triggerTimeNs
Trigger time in ns from TURF.
unsigned char trigType
The trigger type.
Definition: oldStructs.h:25
unsigned char errorFlag
Error Flag.
Definition: oldStructs.h:218
unsigned int unixTimeUs
unix UTC microsec
Definition: oldStructs.h:715
UShort_t upperL1TrigPattern
Bit mask for upper ring l1 antenna triggers. eg. if the bit 1 (the lowest bit) is active it means the...
unsigned short phiTrigMask
16-bit phi mask (from TURF)
Definition: oldStructs.h:174
unsigned int eventNumber
Global event number.
Definition: oldStructs.h:87
unsigned short phiTrigMaskH
16-bit phi mask (from TURF)
Definition: oldStructs.h:224
UShort_t l3TrigPattern
Bit mask for l3 global triggers. eg. if the bit 1 (the lowest bit) is active it means that phi sector...
UShort_t prioritizerStuff
Prioritizer stuff.
UChar_t priority
Queue (lower 4-bits) and priority (upper 4-bits)
unsigned char peakThetaBin
8-bit peak theta bin from Prioritizer
unsigned int eventNumber
Global event number.
unsigned short trigNum
turf trigger counter
Definition: oldStructs.h:695
unsigned int unixTime
unix UTC sec
Definition: oldStructs.h:191
unsigned char surfSlipFlag
Sync Slip between SURF 2-9 and SURF 1.
Definition: oldStructs.h:170
UShort_t calibStatus
Calib/Relay Status.
TurfioStruct_t turfio
The X byte TURFIO data.
Definition: oldStructs.h:228
UShort_t otherTrigPattern[3]
Other trig patterns – currently reserved.
unsigned char turfUpperWord
The upper 8 bits from the TURF.
Definition: oldStructs.h:157
UChar_t nadirAntTrigMask
8-bit nadir phi mask (from TURF)
int gpsSubTime
GPS timestamp.
unsigned short calibStatus
Were we flashing the pulser?
Definition: oldStructs.h:155
UShort_t phiTrigMaskOffline
16-bit phi mask (from TURF)
int isInPhiMask(int phi, AnitaPol::AnitaPol_t pol=AnitaPol::kVertical) const
Returns 1 if given phi-pol is in mask.
ANITA Event Header – Telemetered.
Definition: oldStructs.h:140
unsigned int turfEventId
Turf event id that doesn&#39;t roll.
Definition: oldStructs.h:202
int isInL3Pattern(int phi, AnitaPol::AnitaPol_t pol=AnitaPol::kVertical) const
Returns 1 if given phi-ring had l3 trigger. pol does nothing for A4.
unsigned char turfUpperWord
The upper 8 bits from the TURF.
Definition: oldStructs.h:206
unsigned short l1TrigMask
16-bit phi ant mask (from TURF)
Definition: oldStructs.h:221
unsigned short calibStatus
Were we flashing the pulser?
Definition: oldStructs.h:204
unsigned char priority
priority and other
int gpsSubTime
GPS timestamp.
Definition: oldStructs.h:85
unsigned int antTrigMask
2x 16-bit phi ant mask (from TURF)
Definition: oldStructs.h:105
unsigned char nadirAntTrigMask
8-bit nadir phi mask (from TURF)
Definition: oldStructs.h:740
unsigned short imagePeak
16-bit image peak from Prioritizer
Definition: oldStructs.h:225
unsigned short phiTrigMaskH
16-bit phi mask (from TURF)
Definition: oldStructs.h:175
unsigned char nadirL2TrigPattern
Might just be the same thing.
Definition: oldStructs.h:707
unsigned short l1TrigMaskH
16-bit phi ant mask (from TURF)
Definition: oldStructs.h:222
TurfioStructVer40_t turfio
The X byte TURFIO data.
Definition: oldStructs.h:179
Int_t goodTimeFlag
1 is good trigger time, 0 is bad trigger time
UChar_t nadirL2TrigPattern
8-bit trigger mask for L2 nadir triggers. Nadir L2 triggers are for the even phi sectors and are just...
unsigned char reserved[2]
reserved[0] is
Definition: oldStructs.h:107
TurfioStructVer30_t turfio
The X byte TURFIO data.
Definition: oldStructs.h:108
unsigned short calibStatus
Were we flashing the pulser?
Definition: oldStructs.h:88
unsigned short prioritizerStuff
TBD.
Definition: oldStructs.h:227
unsigned short trigNum
turf trigger counter
RawAnitaHeader – The Raw ANITA Event Header.
unsigned short calibStatus
Were we flashing the pulser?
unsigned char errorFlag
Error Flag.
Int_t getTriggerBitRF() const
unsigned short deadTime
fraction = deadTime/64400
Definition: oldStructs.h:127
UChar_t l3Type1Count
Count of l3 type 1 triggers.
unsigned short imagePeak
16-bit image peak from Prioritizer
Definition: oldStructs.h:176
unsigned int c3poNum
1 number of trigger time ticks per PPS
Definition: oldStructs.h:699
unsigned char l3Type1Count
L3 counter.
unsigned char l3Type1Count
L3 counter.
Definition: oldStructs.h:694
TurfioStruct_t turfio
The X byte TURFIO data.
Int_t getTriggerBitADU5() const
int isInL1Mask(int phi, AnitaPol::AnitaPol_t pol=AnitaPol::kVertical) const
Returns 1 if given phi-pol is in mask.
Int_t run
Run number, assigned on ground.
ANITA Event Header – Telemetered.
unsigned int unixTime
unix UTC sec
Definition: oldStructs.h:142
unsigned char otherFlag
unsigned int turfEventId
Turf event id that doesn&#39;t roll.
unsigned short phiTrigMaskH
16-bit phi mask (from TURF)
unsigned int c3poNum
1 number of trigger time ticks per PPS
Definition: oldStructs.h:31
UInt_t payloadTime
unixTime of readout
UShort_t l2TrigMaskH
Deprecated.
unsigned int getCurrentTurfHolds() const
Returns a 4-bit bitmask corresponding to the currently held buffers.
const char * packetCodeAsString(PacketCode_t code)
packetCodeAsString – utility function
unsigned short deadTime
fraction = deadTime/64400
unsigned short ppsNum
1PPS
Definition: oldStructs.h:29
~RawAnitaHeader()
Destructor.
UInt_t turfEventId
TURF Event Id (12-bit run + 20-bit event)
unsigned char trigType
The trigger type.
Definition: oldStructs.h:693
unsigned char bufferDepth
bits 0,1 trigTime depth 2,3 current depth
Definition: oldStructs.h:40
unsigned short ppsNum
1PPS
Definition: oldStructs.h:126
unsigned short prioritizerStuff
TBD.
Definition: oldStructs.h:178
unsigned int c3poNum
1 number of trigger time ticks per PPS
Definition: oldStructs.h:128
UShort_t phiTrigMask
16-bit phi mask (from TURF)
UShort_t phiTrigMaskHOffline
16-bit phi mask (from TURF)
unsigned char turfUpperWord
The upper 8 bits from the TURF.
Definition: oldStructs.h:729
UInt_t c3poNum
Number of TURF clock ticks between GPS pulse per seconds.
unsigned short imagePeak
16-bit image peak from Prioritizer
UInt_t antTrigMask
Deprecated.
unsigned char bufferDepth
bits 0,1 trigTime depth 2,3 current depth
ANITA Event Header – Telemetered.
Definition: oldStructs.h:73
unsigned char surfSlipFlag
Sync Slip between SURF 2-9 and SURF 1.
unsigned char bufferDepth
bits 0,1 trigTime depth 2,3 current depth
Definition: oldStructs.h:708
unsigned short phiTrigMask
16-bit phi mask (from TURF)
Definition: oldStructs.h:742
unsigned char otherFlag
Definition: oldStructs.h:158
unsigned short coherentSumPeak
16-bit coherent sum peak from Prioritizer
Definition: oldStructs.h:226
int getNumberOfCurrentTurfHolds() const
Returns the number of currently held TURF buffers (0-4)
UShort_t phiTrigMaskH
16-bit phi mask (from TURF)
UInt_t trigTime
Trigger time in TURF clock ticks.
Int_t getTriggerBitSoftExt() const
ANITA Event Header – Telemetered.
Definition: oldStructs.h:189
UShort_t lowerL1TrigPattern
Bit mask for lower ring l1 antenna triggers. eg. if the bit 1 (the lowest bit) is active it means the...
unsigned int unixTimeUs
unix UTC microsec
Definition: oldStructs.h:192
unsigned char otherFlag
Definition: oldStructs.h:730
unsigned short phiTrigMask
16-bit phi mask (from TURF)
Definition: oldStructs.h:223
unsigned short trigNum
turf trigger counter
Definition: oldStructs.h:124
unsigned char priority
priority and other
Definition: oldStructs.h:156
unsigned short calibStatus
Were we flashing the pulser?
Definition: oldStructs.h:727
unsigned char errorFlag
Error Flag.
Definition: oldStructs.h:102
unsigned char surfSlipFlag
Sync Slip between SURF 2-9 and SURF 1.
Definition: oldStructs.h:219
const char * trigTypeAsString() const
Returns trigger type as string.
UChar_t bufferDepth
Buffer depth.
unsigned char priority
priority and other
Definition: oldStructs.h:205
unsigned char turfUpperWord
The upper 8 bits from the TURF.
unsigned char trigType
The trigger type.
UInt_t payloadTimeUs
sub second time of readout
unsigned short prioritizerStuff
TBD.
unsigned int turfEventId
Turf event id that doesn&#39;t roll.
Definition: oldStructs.h:86
unsigned char surfSlipFlag
Sync Slip between SURF 2-9 and SURF 1.
Definition: oldStructs.h:103
unsigned char otherFlag
Definition: oldStructs.h:207
unsigned int unixTime
unix UTC sec
unsigned short trigNum
turf trigger counter
Definition: oldStructs.h:27
unsigned char trigType
The trigger type.
Definition: oldStructs.h:122
int getPhiMask(AnitaPol::AnitaPol_t pol=AnitaPol::kVertical) const
pol does nothing for A4
unsigned int c3poNum
1 number of trigger time ticks per PPS
unsigned char nadirL2TrigPattern
Might just be the same thing.
Definition: oldStructs.h:39
unsigned int unixTime
unix UTC sec
Definition: oldStructs.h:75
unsigned char bufferDepth
bits 0,1 trigTime depth 2,3 current depth
Definition: oldStructs.h:131
unsigned int unixTime
unix UTC sec
Definition: oldStructs.h:714
Vertical Polarisation.
unsigned char peakThetaBin
8-bit peak theta bin from Prioritizer
Definition: oldStructs.h:171
UShort_t deadTime
Dead Time.
unsigned int unixTimeUs
unix UTC microsec
unsigned int unixTimeUs
unix UTC microsec
Definition: oldStructs.h:143
unsigned char surfSlipFlag
Sync Slip between SURF 2-9 and SURF 1.
Definition: oldStructs.h:739
int gpsSubTime
GPS timestamp.
Definition: oldStructs.h:152
UShort_t upperL2TrigPattern
Bit mask for upper ring l2 cluster triggers. eg. if the bit 1 (the lowest bit) is active it means the...
unsigned char priority
priority and other
Definition: oldStructs.h:728
unsigned char errorFlag
Error Flag.
Definition: oldStructs.h:738
unsigned short phiTrigMask
16-bit phi mask (from TURF)
Definition: oldStructs.h:106
unsigned short deadTime
fraction = deadTime/64400
Definition: oldStructs.h:698
unsigned short coherentSumPeak
16-bit coherent sum peak from Prioritizer
Definition: oldStructs.h:177
unsigned short coherentSumPeak
16-bit coherent sum peak from Prioritizer
Horizontal Polarisation.
unsigned short phiTrigMask
16-bit phi mask (from TURF)
unsigned char peakThetaBin
8-bit peak theta bin from Prioritizer
Definition: oldStructs.h:220
unsigned char turfUpperWord
The upper 8 bits from the TURF.
Definition: oldStructs.h:90
UInt_t realTime
unixTime of readout
int gpsSubTime
GPS timestamp.
Definition: oldStructs.h:724
unsigned char l3Type1Count
L3 counter.
Definition: oldStructs.h:123
UChar_t nadirL1TrigPattern
8-bit trigger mask for L1 nadir triggers. Here bit 1 is antenna 33 (phi 1), bit 2 is antenna 34 (phi ...
UChar_t turfUpperWord
Upper word from TURF, useful for debugging.
unsigned int turfEventId
Turf event id that doesn&#39;t roll.
Definition: oldStructs.h:153
UInt_t gpsSubTime
sub second time from GPS (if matched)
Int_t getTriggerBitG12() const
UShort_t trigNum
Trigger number (since last clear all)
UChar_t turfioReserved
Reserved.
unsigned short l1TrigMask
16-bit phi ant mask (from TURF)
Definition: oldStructs.h:172
enum AnitaPol::EAnitaPol AnitaPol_t
Polarisation enumeration.
unsigned char l3Type1Count
L3 counter.
Definition: oldStructs.h:26
unsigned int unixTimeUs
unix UTC microsec
Definition: oldStructs.h:76
unsigned int eventNumber
Global event number.
Definition: oldStructs.h:203
UShort_t l1TrigMaskHOffline
Deprecated.
unsigned int turfEventId
Turf event id that doesn&#39;t roll.
Definition: oldStructs.h:725
unsigned short l2TrigMask
16-bit phi ant mask (from TURF)
unsigned char errorFlag
Error Flag.
Definition: oldStructs.h:169
unsigned char otherFlag
Definition: oldStructs.h:91
unsigned char priority
priority and other
Definition: oldStructs.h:89
int simplePacketCheck(GenericHeader_t *gHdr, PacketCode_t code)
simplePacketCheck – utility function
unsigned int antTrigMask
2x 16-bit phi ant mask (from TURF)
Definition: oldStructs.h:741
unsigned int eventNumber
Global event number.
Definition: oldStructs.h:726
UChar_t trigType
Bit 0 is RF, 1 is ADU5, 2 is G12, 3 is software/external.
UInt_t triggerTime
Trigger time from TURF converted to unixTime.
unsigned int eventNumber
Global event number.
Definition: oldStructs.h:154
AnitaEventHeader_t –Yes.
RawAnitaHeader()
Default constructor.