ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

///////////////////////////////////////////////////////////////////////////////
//
//  Class represents CTP interaction record
//
//  The definition of the IR follows the ALICE internal note:
//  ALICE-INT-2002-010
//  The CTP raw-data payload will contain IRs within +- 1 orbit
//  around the triggered event.
//  The same IRs are propagated to the ESD (and AOD).
//
//  cvetan.cheshkov@cern.ch 10/07/2008
//
///////////////////////////////////////////////////////////////////////////////

#include <Riostream.h>

#include "AliTriggerIR.h"

using std::endl;
using std::cout;
using std::dec;
using std::hex;
ClassImp(AliTriggerIR)

//_____________________________________________________________________________
AliTriggerIR::AliTriggerIR():
  TObject(),
  fOrbit(0),
  fNWord(0),
  fInt1(NULL),
  fInt2(NULL),
  fBC(NULL),
  fIncomplete(kFALSE),
  fTransErr(kFALSE)
{
  // Default constructor
}

//_____________________________________________________________________________
AliTriggerIR::AliTriggerIR(UInt_t orbit, UInt_t nwords, UInt_t *words, Bool_t incomplete, Bool_t transerr):
  TObject(),
  fOrbit(orbit),
  fNWord(nwords),
  fInt1(NULL),
  fInt2(NULL),
  fBC(NULL),
  fIncomplete(incomplete),
  fTransErr(transerr)
{
   //  Standard constructor
   //
   //  It takes as an input the CTP raw-data payload (words)
   //  corresponding to the IRs
   if(fNWord){
     fInt1 = new Bool_t[fNWord];
     fInt2 = new Bool_t[fNWord];
     fBC   = new UShort_t[fNWord];
     for(UInt_t i = 0; i < fNWord; i++) {
        fInt1[i] = words[i] & 0x1000;
        fInt2[i] = words[i] & 0x2000;
        fBC[i] = words[i] & 0xFFF;
     }
  }
}

//______________________________________________________________________________
AliTriggerIR::AliTriggerIR(const AliTriggerIR &rec):
  TObject(rec),
  fOrbit(rec.fOrbit),
  fNWord(rec.fNWord),
  fInt1(NULL),
  fInt2(NULL),
  fBC(NULL),
  fIncomplete(rec.fIncomplete),
  fTransErr(rec.fTransErr)
{
  // Copy constructor
  //
  if(fNWord){
    fInt1 = new Bool_t[fNWord];
    fInt2 = new Bool_t[fNWord];
    fBC   = new UShort_t[fNWord];
    for (UInt_t i = 0; i < fNWord; i++) {
      fInt1[i] = rec.fInt1[i];
      fInt2[i] = rec.fInt2[i];
      fBC[i] = rec.fBC[i];
    }
  }
}
//_____________________________________________________________________________
AliTriggerIR &AliTriggerIR::operator =(const AliTriggerIR& rec)
{
  // assignment operator
  //
  if(this==&rec) return *this;
  ((TObject *)this)->operator=(rec);

  fOrbit = rec.fOrbit;
  fNWord = rec.fNWord;
  if(fNWord){
    if (fInt1) delete fInt1;
    fInt1 = new Bool_t[fNWord];
    if (fInt2) delete fInt2;
    fInt2 = new Bool_t[fNWord];
    if (fBC) delete fBC;
    fBC = new UShort_t[fNWord];
    for (UInt_t i = 0; i < fNWord; i++) {
      fInt1[i] = rec.fInt1[i];
      fInt2[i] = rec.fInt2[i];
      fBC[i] = rec.fBC[i];
    }
  }  
  fIncomplete = rec.fIncomplete;
  fTransErr = rec.fTransErr;
  return *this;
}

//______________________________________________________________________________
AliTriggerIR::~AliTriggerIR()
{
  // Destructor
  //
  if (fInt1) delete [] fInt1;
  if (fInt2) delete [] fInt2;
  if (fBC) delete [] fBC;
}

//_____________________________________________________________________________
void AliTriggerIR::Print( const Option_t* ) const
{
  // Print
  cout << "Trigger Interaction Record:" << endl; 
  cout << "  Orbit:                0x" << hex << fOrbit << dec << endl;
  cout << "  Number of signals:    " << fNWord << endl;
  for (UInt_t i = 0; i < fNWord; i++)
    cout << "    BC: 0x" << hex << fBC[i] << dec << "  Interaction1: " << fInt1[i] << "  Interaction2: " << fInt2[i] << endl;

  cout << "  Record incomplete:    " << fIncomplete << endl;
  cout << "  Transmission Error:   " << fTransErr << endl;
}
 AliTriggerIR.cxx:1
 AliTriggerIR.cxx:2
 AliTriggerIR.cxx:3
 AliTriggerIR.cxx:4
 AliTriggerIR.cxx:5
 AliTriggerIR.cxx:6
 AliTriggerIR.cxx:7
 AliTriggerIR.cxx:8
 AliTriggerIR.cxx:9
 AliTriggerIR.cxx:10
 AliTriggerIR.cxx:11
 AliTriggerIR.cxx:12
 AliTriggerIR.cxx:13
 AliTriggerIR.cxx:14
 AliTriggerIR.cxx:15
 AliTriggerIR.cxx:16
 AliTriggerIR.cxx:17
 AliTriggerIR.cxx:18
 AliTriggerIR.cxx:19
 AliTriggerIR.cxx:20
 AliTriggerIR.cxx:21
 AliTriggerIR.cxx:22
 AliTriggerIR.cxx:23
 AliTriggerIR.cxx:24
 AliTriggerIR.cxx:25
 AliTriggerIR.cxx:26
 AliTriggerIR.cxx:27
 AliTriggerIR.cxx:28
 AliTriggerIR.cxx:29
 AliTriggerIR.cxx:30
 AliTriggerIR.cxx:31
 AliTriggerIR.cxx:32
 AliTriggerIR.cxx:33
 AliTriggerIR.cxx:34
 AliTriggerIR.cxx:35
 AliTriggerIR.cxx:36
 AliTriggerIR.cxx:37
 AliTriggerIR.cxx:38
 AliTriggerIR.cxx:39
 AliTriggerIR.cxx:40
 AliTriggerIR.cxx:41
 AliTriggerIR.cxx:42
 AliTriggerIR.cxx:43
 AliTriggerIR.cxx:44
 AliTriggerIR.cxx:45
 AliTriggerIR.cxx:46
 AliTriggerIR.cxx:47
 AliTriggerIR.cxx:48
 AliTriggerIR.cxx:49
 AliTriggerIR.cxx:50
 AliTriggerIR.cxx:51
 AliTriggerIR.cxx:52
 AliTriggerIR.cxx:53
 AliTriggerIR.cxx:54
 AliTriggerIR.cxx:55
 AliTriggerIR.cxx:56
 AliTriggerIR.cxx:57
 AliTriggerIR.cxx:58
 AliTriggerIR.cxx:59
 AliTriggerIR.cxx:60
 AliTriggerIR.cxx:61
 AliTriggerIR.cxx:62
 AliTriggerIR.cxx:63
 AliTriggerIR.cxx:64
 AliTriggerIR.cxx:65
 AliTriggerIR.cxx:66
 AliTriggerIR.cxx:67
 AliTriggerIR.cxx:68
 AliTriggerIR.cxx:69
 AliTriggerIR.cxx:70
 AliTriggerIR.cxx:71
 AliTriggerIR.cxx:72
 AliTriggerIR.cxx:73
 AliTriggerIR.cxx:74
 AliTriggerIR.cxx:75
 AliTriggerIR.cxx:76
 AliTriggerIR.cxx:77
 AliTriggerIR.cxx:78
 AliTriggerIR.cxx:79
 AliTriggerIR.cxx:80
 AliTriggerIR.cxx:81
 AliTriggerIR.cxx:82
 AliTriggerIR.cxx:83
 AliTriggerIR.cxx:84
 AliTriggerIR.cxx:85
 AliTriggerIR.cxx:86
 AliTriggerIR.cxx:87
 AliTriggerIR.cxx:88
 AliTriggerIR.cxx:89
 AliTriggerIR.cxx:90
 AliTriggerIR.cxx:91
 AliTriggerIR.cxx:92
 AliTriggerIR.cxx:93
 AliTriggerIR.cxx:94
 AliTriggerIR.cxx:95
 AliTriggerIR.cxx:96
 AliTriggerIR.cxx:97
 AliTriggerIR.cxx:98
 AliTriggerIR.cxx:99
 AliTriggerIR.cxx:100
 AliTriggerIR.cxx:101
 AliTriggerIR.cxx:102
 AliTriggerIR.cxx:103
 AliTriggerIR.cxx:104
 AliTriggerIR.cxx:105
 AliTriggerIR.cxx:106
 AliTriggerIR.cxx:107
 AliTriggerIR.cxx:108
 AliTriggerIR.cxx:109
 AliTriggerIR.cxx:110
 AliTriggerIR.cxx:111
 AliTriggerIR.cxx:112
 AliTriggerIR.cxx:113
 AliTriggerIR.cxx:114
 AliTriggerIR.cxx:115
 AliTriggerIR.cxx:116
 AliTriggerIR.cxx:117
 AliTriggerIR.cxx:118
 AliTriggerIR.cxx:119
 AliTriggerIR.cxx:120
 AliTriggerIR.cxx:121
 AliTriggerIR.cxx:122
 AliTriggerIR.cxx:123
 AliTriggerIR.cxx:124
 AliTriggerIR.cxx:125
 AliTriggerIR.cxx:126
 AliTriggerIR.cxx:127
 AliTriggerIR.cxx:128
 AliTriggerIR.cxx:129
 AliTriggerIR.cxx:130
 AliTriggerIR.cxx:131
 AliTriggerIR.cxx:132
 AliTriggerIR.cxx:133
 AliTriggerIR.cxx:134
 AliTriggerIR.cxx:135
 AliTriggerIR.cxx:136
 AliTriggerIR.cxx:137
 AliTriggerIR.cxx:138
 AliTriggerIR.cxx:139
 AliTriggerIR.cxx:140
 AliTriggerIR.cxx:141
 AliTriggerIR.cxx:142
 AliTriggerIR.cxx:143
 AliTriggerIR.cxx:144
 AliTriggerIR.cxx:145
 AliTriggerIR.cxx:146
 AliTriggerIR.cxx:147
 AliTriggerIR.cxx:148
 AliTriggerIR.cxx:149
 AliTriggerIR.cxx:150
 AliTriggerIR.cxx:151
 AliTriggerIR.cxx:152
 AliTriggerIR.cxx:153
 AliTriggerIR.cxx:154
 AliTriggerIR.cxx:155