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.                  *
 **************************************************************************/
 
/* $Id$ */

#include "AliMUONDarcHeader.h"
#include "AliMUONRegHeader.h"

//-----------------------------------------------------------------------------
/// \class AliMUONDarcHeader
/// Darc structure for trigger raw data.
/// Each DDL contains one Darc structure
/// The structure includes the information of the Darc boards
/// the Global board input and the global board output
/// The structure containes the information of the 8 (at most) 
/// regional structures.
///
/// \author Christian Finck
//-----------------------------------------------------------------------------

/// \cond CLASSIMP
ClassImp(AliMUONDarcHeader)
/// \endcond

 const Int_t AliMUONDarcHeader::fgkDarcHeaderLength   =  1;
 const Int_t AliMUONDarcHeader::fgkGlobalHeaderLength =  5;
 const Int_t AliMUONDarcHeader::fgkDarcScalerLength   =  8;
 const Int_t AliMUONDarcHeader::fgkGlobalScalerLength =  10;

 const UInt_t AliMUONDarcHeader::fgkEndOfDarc   = 0xDEADFACE;
 const UInt_t AliMUONDarcHeader::fgkEndOfGlobal = 0xDEADBEEF;
 const UInt_t AliMUONDarcHeader::fgkDarcVadorhType    = 4;
 const UInt_t AliMUONDarcHeader::fgkDarcDefaultType   = 6;

//___________________________________________
AliMUONDarcHeader::AliMUONDarcHeader(TRootIOCtor* /*dummy*/)
:  TObject(),
fWord(0),
fGlobalOutput(0),
fGlobalL0(0), 
fGlobalClk(0),
fGlobalHold(0),      
fGlobalSpare(0),     
fDarcL0R(0),
fDarcL1P(0),
fDarcL1S(0),
fDarcL2A(0),
fDarcL2R(0),
fDarcClk(0),
fDarcHold(0),
fDarcSpare(0),
fRegHeaderArray(0x0)
{
  /// ctor
  for (Int_t i = 0; i < 4; i++)
    fGlobalInput[i] = 0;
  
  for (Int_t i = 0; i < 6; i++)
    fGlobalScaler[i] = 0;
  
}

//___________________________________________
AliMUONDarcHeader::AliMUONDarcHeader()
  :  TObject(),
     fWord(0),
     fGlobalOutput(0),

     fGlobalL0(0), 
     fGlobalClk(0),
     fGlobalHold(0),      
     fGlobalSpare(0),     

     fDarcL0R(0),
     fDarcL1P(0),
     fDarcL1S(0),
     fDarcL2A(0),
     fDarcL2R(0),
     fDarcClk(0),
     fDarcHold(0),
     fDarcSpare(0),
     fRegHeaderArray(new TClonesArray("AliMUONRegHeader",8))
  

{
  /// ctor
   
  for (Int_t i = 0; i < 4; i++)
    fGlobalInput[i] = 0;

  for (Int_t i = 0; i < 6; i++)
    fGlobalScaler[i] = 0;

}

//___________________________________________
AliMUONDarcHeader::AliMUONDarcHeader(const AliMUONDarcHeader& event)
  :  TObject(event),
     fWord(event.fWord),
     fGlobalOutput(event.fGlobalOutput),
     fGlobalL0(event.fGlobalL0),
     fGlobalClk(event.fGlobalClk),
     fGlobalHold(event.fGlobalHold),   
     fGlobalSpare(event.fGlobalSpare),

     fDarcL0R(event.fDarcL0R),
     fDarcL1P(event.fDarcL1P),
     fDarcL1S(event.fDarcL1S),
     fDarcL2A(event.fDarcL2A),
     fDarcL2R(event.fDarcL2R),
     fDarcClk(event.fDarcClk),
     fDarcHold(event.fDarcHold),
     fDarcSpare(event.fDarcSpare),
     fRegHeaderArray(new TClonesArray("AliMUONRegHeader", 8))

{
  ///
  /// copy ctor
  ///
 
 for (Int_t i = 0; i < 4; i++)
    fGlobalInput[i] = event.fGlobalInput[i];

  for (Int_t i = 0; i < 6; i++)
    fGlobalScaler[i] = event.fGlobalScaler[i];

  for (Int_t index = 0; index < (event.fRegHeaderArray)->GetEntriesFast(); index++) {
    new ((*fRegHeaderArray)[fRegHeaderArray->GetEntriesFast()]) 
        AliMUONRegHeader(*(AliMUONRegHeader*)(event.fRegHeaderArray)->At(index));
  }
}

//___________________________________________
AliMUONDarcHeader& AliMUONDarcHeader::operator=(const AliMUONDarcHeader& event)
{
  /// 
  /// assignment operator
  ///
  if (this == &event) return *this;

  fWord         = event.fWord;
  fGlobalOutput = event.fGlobalOutput;
  fGlobalL0     = event.fGlobalL0;
  fGlobalClk    = event.fGlobalClk;
  fGlobalHold   = event.fGlobalHold;   
  fGlobalSpare  = event.fGlobalSpare;

  fDarcL0R   = event.fDarcL0R;
  fDarcL1P   = event.fDarcL1P;
  fDarcL1S   = event.fDarcL1S;
  fDarcL2A   = event.fDarcL2A;
  fDarcL2R   = event.fDarcL2R;
  fDarcClk   = event.fDarcClk;
  fDarcHold  = event.fDarcHold;
  fDarcSpare = event.fDarcSpare;

  for (Int_t i = 0; i < 4; i++)
    fGlobalInput[i] = event.fGlobalInput[i];

  for (Int_t i = 0; i < 6; i++)
    fGlobalScaler[i] = event.fGlobalScaler[i];

  fRegHeaderArray = new TClonesArray("AliMUONRegHeader", 8);
  for (Int_t index = 0; index < (event.fRegHeaderArray)->GetEntriesFast(); index++) {
    new ((*fRegHeaderArray)[fRegHeaderArray->GetEntriesFast()]) 
        AliMUONRegHeader(*(AliMUONRegHeader*)(event.fRegHeaderArray)->At(index));
  }

  return *this;
}

//___________________________________________
AliMUONDarcHeader::~AliMUONDarcHeader()
{
  /// 
  /// dtor
  ///
  fRegHeaderArray->Delete();
  delete fRegHeaderArray;
}

//___________________________________________
void AliMUONDarcHeader::SetScalersNumbers()
{
  /// set numbers for scaler events for Darc header
  /// since this is provided by the experiment
  /// put dummy numbers to check the monitoring
  
  fGlobalL0    = 1000;
  fGlobalClk   = 10000;
  fGlobalHold  = 100;    
  fGlobalSpare = 1;    

  fDarcL0R   = 1000;
  fDarcL1P   = 900;
  fDarcL1S   = 800;
  fDarcL2A   = 700;
  fDarcL2R   = 700;
  fDarcClk   = 10000;
  fDarcHold  = 100;
  fDarcSpare = 0;

   for (Int_t i = 0; i < 6; i++)
    fGlobalScaler[i] = i;

}
//___________________________________________
Bool_t  AliMUONDarcHeader::GetEventType()  const 
{
  /// return 1 for physics trigger
  /// return 0 for software trigger
  // 01 = trigger physics
  // 10 = trigger software "start of run"
  // 11 = trigger software "end of run"
  // 00 = other trigger software
  
  Bool_t b1 =   (fWord >> 30) &  0x1;
  Bool_t b2 = !((fWord >> 31) &  0x1);
  
  //printf("%d\n", b1 & b2);
  //printf("%d %d\n", b2 , b1);
  return (b1 & b2);
}

//___________________________________________
void AliMUONDarcHeader::Clear(Option_t* )
{
  /// Clear TClones arrays
  /// instead of deleting
  ///
  fRegHeaderArray->Clear("C");
 
}
 AliMUONDarcHeader.cxx:1
 AliMUONDarcHeader.cxx:2
 AliMUONDarcHeader.cxx:3
 AliMUONDarcHeader.cxx:4
 AliMUONDarcHeader.cxx:5
 AliMUONDarcHeader.cxx:6
 AliMUONDarcHeader.cxx:7
 AliMUONDarcHeader.cxx:8
 AliMUONDarcHeader.cxx:9
 AliMUONDarcHeader.cxx:10
 AliMUONDarcHeader.cxx:11
 AliMUONDarcHeader.cxx:12
 AliMUONDarcHeader.cxx:13
 AliMUONDarcHeader.cxx:14
 AliMUONDarcHeader.cxx:15
 AliMUONDarcHeader.cxx:16
 AliMUONDarcHeader.cxx:17
 AliMUONDarcHeader.cxx:18
 AliMUONDarcHeader.cxx:19
 AliMUONDarcHeader.cxx:20
 AliMUONDarcHeader.cxx:21
 AliMUONDarcHeader.cxx:22
 AliMUONDarcHeader.cxx:23
 AliMUONDarcHeader.cxx:24
 AliMUONDarcHeader.cxx:25
 AliMUONDarcHeader.cxx:26
 AliMUONDarcHeader.cxx:27
 AliMUONDarcHeader.cxx:28
 AliMUONDarcHeader.cxx:29
 AliMUONDarcHeader.cxx:30
 AliMUONDarcHeader.cxx:31
 AliMUONDarcHeader.cxx:32
 AliMUONDarcHeader.cxx:33
 AliMUONDarcHeader.cxx:34
 AliMUONDarcHeader.cxx:35
 AliMUONDarcHeader.cxx:36
 AliMUONDarcHeader.cxx:37
 AliMUONDarcHeader.cxx:38
 AliMUONDarcHeader.cxx:39
 AliMUONDarcHeader.cxx:40
 AliMUONDarcHeader.cxx:41
 AliMUONDarcHeader.cxx:42
 AliMUONDarcHeader.cxx:43
 AliMUONDarcHeader.cxx:44
 AliMUONDarcHeader.cxx:45
 AliMUONDarcHeader.cxx:46
 AliMUONDarcHeader.cxx:47
 AliMUONDarcHeader.cxx:48
 AliMUONDarcHeader.cxx:49
 AliMUONDarcHeader.cxx:50
 AliMUONDarcHeader.cxx:51
 AliMUONDarcHeader.cxx:52
 AliMUONDarcHeader.cxx:53
 AliMUONDarcHeader.cxx:54
 AliMUONDarcHeader.cxx:55
 AliMUONDarcHeader.cxx:56
 AliMUONDarcHeader.cxx:57
 AliMUONDarcHeader.cxx:58
 AliMUONDarcHeader.cxx:59
 AliMUONDarcHeader.cxx:60
 AliMUONDarcHeader.cxx:61
 AliMUONDarcHeader.cxx:62
 AliMUONDarcHeader.cxx:63
 AliMUONDarcHeader.cxx:64
 AliMUONDarcHeader.cxx:65
 AliMUONDarcHeader.cxx:66
 AliMUONDarcHeader.cxx:67
 AliMUONDarcHeader.cxx:68
 AliMUONDarcHeader.cxx:69
 AliMUONDarcHeader.cxx:70
 AliMUONDarcHeader.cxx:71
 AliMUONDarcHeader.cxx:72
 AliMUONDarcHeader.cxx:73
 AliMUONDarcHeader.cxx:74
 AliMUONDarcHeader.cxx:75
 AliMUONDarcHeader.cxx:76
 AliMUONDarcHeader.cxx:77
 AliMUONDarcHeader.cxx:78
 AliMUONDarcHeader.cxx:79
 AliMUONDarcHeader.cxx:80
 AliMUONDarcHeader.cxx:81
 AliMUONDarcHeader.cxx:82
 AliMUONDarcHeader.cxx:83
 AliMUONDarcHeader.cxx:84
 AliMUONDarcHeader.cxx:85
 AliMUONDarcHeader.cxx:86
 AliMUONDarcHeader.cxx:87
 AliMUONDarcHeader.cxx:88
 AliMUONDarcHeader.cxx:89
 AliMUONDarcHeader.cxx:90
 AliMUONDarcHeader.cxx:91
 AliMUONDarcHeader.cxx:92
 AliMUONDarcHeader.cxx:93
 AliMUONDarcHeader.cxx:94
 AliMUONDarcHeader.cxx:95
 AliMUONDarcHeader.cxx:96
 AliMUONDarcHeader.cxx:97
 AliMUONDarcHeader.cxx:98
 AliMUONDarcHeader.cxx:99
 AliMUONDarcHeader.cxx:100
 AliMUONDarcHeader.cxx:101
 AliMUONDarcHeader.cxx:102
 AliMUONDarcHeader.cxx:103
 AliMUONDarcHeader.cxx:104
 AliMUONDarcHeader.cxx:105
 AliMUONDarcHeader.cxx:106
 AliMUONDarcHeader.cxx:107
 AliMUONDarcHeader.cxx:108
 AliMUONDarcHeader.cxx:109
 AliMUONDarcHeader.cxx:110
 AliMUONDarcHeader.cxx:111
 AliMUONDarcHeader.cxx:112
 AliMUONDarcHeader.cxx:113
 AliMUONDarcHeader.cxx:114
 AliMUONDarcHeader.cxx:115
 AliMUONDarcHeader.cxx:116
 AliMUONDarcHeader.cxx:117
 AliMUONDarcHeader.cxx:118
 AliMUONDarcHeader.cxx:119
 AliMUONDarcHeader.cxx:120
 AliMUONDarcHeader.cxx:121
 AliMUONDarcHeader.cxx:122
 AliMUONDarcHeader.cxx:123
 AliMUONDarcHeader.cxx:124
 AliMUONDarcHeader.cxx:125
 AliMUONDarcHeader.cxx:126
 AliMUONDarcHeader.cxx:127
 AliMUONDarcHeader.cxx:128
 AliMUONDarcHeader.cxx:129
 AliMUONDarcHeader.cxx:130
 AliMUONDarcHeader.cxx:131
 AliMUONDarcHeader.cxx:132
 AliMUONDarcHeader.cxx:133
 AliMUONDarcHeader.cxx:134
 AliMUONDarcHeader.cxx:135
 AliMUONDarcHeader.cxx:136
 AliMUONDarcHeader.cxx:137
 AliMUONDarcHeader.cxx:138
 AliMUONDarcHeader.cxx:139
 AliMUONDarcHeader.cxx:140
 AliMUONDarcHeader.cxx:141
 AliMUONDarcHeader.cxx:142
 AliMUONDarcHeader.cxx:143
 AliMUONDarcHeader.cxx:144
 AliMUONDarcHeader.cxx:145
 AliMUONDarcHeader.cxx:146
 AliMUONDarcHeader.cxx:147
 AliMUONDarcHeader.cxx:148
 AliMUONDarcHeader.cxx:149
 AliMUONDarcHeader.cxx:150
 AliMUONDarcHeader.cxx:151
 AliMUONDarcHeader.cxx:152
 AliMUONDarcHeader.cxx:153
 AliMUONDarcHeader.cxx:154
 AliMUONDarcHeader.cxx:155
 AliMUONDarcHeader.cxx:156
 AliMUONDarcHeader.cxx:157
 AliMUONDarcHeader.cxx:158
 AliMUONDarcHeader.cxx:159
 AliMUONDarcHeader.cxx:160
 AliMUONDarcHeader.cxx:161
 AliMUONDarcHeader.cxx:162
 AliMUONDarcHeader.cxx:163
 AliMUONDarcHeader.cxx:164
 AliMUONDarcHeader.cxx:165
 AliMUONDarcHeader.cxx:166
 AliMUONDarcHeader.cxx:167
 AliMUONDarcHeader.cxx:168
 AliMUONDarcHeader.cxx:169
 AliMUONDarcHeader.cxx:170
 AliMUONDarcHeader.cxx:171
 AliMUONDarcHeader.cxx:172
 AliMUONDarcHeader.cxx:173
 AliMUONDarcHeader.cxx:174
 AliMUONDarcHeader.cxx:175
 AliMUONDarcHeader.cxx:176
 AliMUONDarcHeader.cxx:177
 AliMUONDarcHeader.cxx:178
 AliMUONDarcHeader.cxx:179
 AliMUONDarcHeader.cxx:180
 AliMUONDarcHeader.cxx:181
 AliMUONDarcHeader.cxx:182
 AliMUONDarcHeader.cxx:183
 AliMUONDarcHeader.cxx:184
 AliMUONDarcHeader.cxx:185
 AliMUONDarcHeader.cxx:186
 AliMUONDarcHeader.cxx:187
 AliMUONDarcHeader.cxx:188
 AliMUONDarcHeader.cxx:189
 AliMUONDarcHeader.cxx:190
 AliMUONDarcHeader.cxx:191
 AliMUONDarcHeader.cxx:192
 AliMUONDarcHeader.cxx:193
 AliMUONDarcHeader.cxx:194
 AliMUONDarcHeader.cxx:195
 AliMUONDarcHeader.cxx:196
 AliMUONDarcHeader.cxx:197
 AliMUONDarcHeader.cxx:198
 AliMUONDarcHeader.cxx:199
 AliMUONDarcHeader.cxx:200
 AliMUONDarcHeader.cxx:201
 AliMUONDarcHeader.cxx:202
 AliMUONDarcHeader.cxx:203
 AliMUONDarcHeader.cxx:204
 AliMUONDarcHeader.cxx:205
 AliMUONDarcHeader.cxx:206
 AliMUONDarcHeader.cxx:207
 AliMUONDarcHeader.cxx:208
 AliMUONDarcHeader.cxx:209
 AliMUONDarcHeader.cxx:210
 AliMUONDarcHeader.cxx:211
 AliMUONDarcHeader.cxx:212
 AliMUONDarcHeader.cxx:213
 AliMUONDarcHeader.cxx:214
 AliMUONDarcHeader.cxx:215
 AliMUONDarcHeader.cxx:216
 AliMUONDarcHeader.cxx:217
 AliMUONDarcHeader.cxx:218
 AliMUONDarcHeader.cxx:219
 AliMUONDarcHeader.cxx:220
 AliMUONDarcHeader.cxx:221
 AliMUONDarcHeader.cxx:222
 AliMUONDarcHeader.cxx:223
 AliMUONDarcHeader.cxx:224
 AliMUONDarcHeader.cxx:225
 AliMUONDarcHeader.cxx:226
 AliMUONDarcHeader.cxx:227
 AliMUONDarcHeader.cxx:228
 AliMUONDarcHeader.cxx:229
 AliMUONDarcHeader.cxx:230
 AliMUONDarcHeader.cxx:231
 AliMUONDarcHeader.cxx:232
 AliMUONDarcHeader.cxx:233
 AliMUONDarcHeader.cxx:234
 AliMUONDarcHeader.cxx:235
 AliMUONDarcHeader.cxx:236
 AliMUONDarcHeader.cxx:237
 AliMUONDarcHeader.cxx:238
 AliMUONDarcHeader.cxx:239
 AliMUONDarcHeader.cxx:240
 AliMUONDarcHeader.cxx:241
 AliMUONDarcHeader.cxx:242
 AliMUONDarcHeader.cxx:243
 AliMUONDarcHeader.cxx:244
 AliMUONDarcHeader.cxx:245