ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2003, 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.                  *
 **************************************************************************/
///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  From ACORDE digits to Raw data
//
// there are 4 words of 32 bits corresponding to word 9 to 12
// (words up to 8 correspond to the header)
// Word 9: bits 1 to 30 --> Modules 1 to 30
//         bits 31-32 = '00'
// Word 10: bits 1 to 30 --> Modules 31 to 60
//          bits 31-32 = '01'
// Word 11: bits 1 to 30 --> Modules 1 to 30
//          bits 31-32 = '10'
// Word 12: bits 1 to 30 --> Modules 1 to 30
//          bits 31-32 = '11'
// Words 9 and 10 are the single muon trigger
// Words 11 and 12 are the multi muon trigger
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include "AliACORDERawData.h"
#include "AliDAQ.h"
#include "AliFstream.h"
#include "AliRawDataHeaderSim.h"


ClassImp(AliACORDERawData)


AliACORDERawData::AliACORDERawData()
  :TObject(),
   fWord9(0),
   fWord10(0),
   fWord11(0),
   fWord12(0)
{
}

AliACORDERawData::AliACORDERawData(const AliACORDERawData &r)
  :TObject(),
   fWord9(0),
   fWord10(0),
   fWord11(0),
   fWord12(0)
{
  ((AliACORDERawData &) r).Copy(*this);
}

AliACORDERawData::~AliACORDERawData()

{

}

AliACORDERawData &AliACORDERawData::operator=(const AliACORDERawData &r)

{
  if (this != &r)  ((AliACORDERawData &) r).Copy(*this);
  return *this;
}

void AliACORDERawData::WriteACORDERawData(Bool_t *b,Bool_t multi)

{
  // set words
  SetACORDERawWords(b,multi);

  // open output file
  const char *fileName = AliDAQ::DdlFileName("ACORDE",0);
  AliFstream* fFile = new AliFstream(fileName);

  // write header
  AliRawDataHeaderSim header;
  UInt_t header_position = fFile->Tellp();
  fFile->WriteBuffer((char*)(&header), sizeof(header));

  // write digits
  fFile->WriteBuffer((char*)(&fWord9), sizeof(fWord9));
  fFile->WriteBuffer((char*)(&fWord10), sizeof(fWord10));
  fFile->WriteBuffer((char*)(&fWord11), sizeof(fWord11));
  fFile->WriteBuffer((char*)(&fWord12), sizeof(fWord12));
  
  // write header again
  UInt_t current_position = fFile->Tellp();
  fFile->Seekp(header_position);
  header.fSize = current_position-header_position;
  header.SetAttribute(0);  // valid data
  fFile->WriteBuffer((char*)(&header), sizeof(header));
  fFile->Seekp(current_position);
}

void AliACORDERawData::SetACORDERawWords(Bool_t *b,Bool_t multi)

{
  // set modules
  for (Int_t i=0;i<30;i++) {
    if (b[i]) {
      fWord9|=(1<<i);
      if (multi) fWord11|=(1<<i);
    }
    if (b[i+30]) {
      fWord10|=(1<<i);
      if (multi) fWord12|=(1<<i);
    }
  } // end for
  // set labels
  fWord10|=(unsigned int)(1<<30);
  fWord12|=(unsigned int)(1<<30);
  fWord11|=(unsigned int)(1<<31); 
  fWord12|=(unsigned int)(1<<31);
}
 AliACORDERawData.cxx:1
 AliACORDERawData.cxx:2
 AliACORDERawData.cxx:3
 AliACORDERawData.cxx:4
 AliACORDERawData.cxx:5
 AliACORDERawData.cxx:6
 AliACORDERawData.cxx:7
 AliACORDERawData.cxx:8
 AliACORDERawData.cxx:9
 AliACORDERawData.cxx:10
 AliACORDERawData.cxx:11
 AliACORDERawData.cxx:12
 AliACORDERawData.cxx:13
 AliACORDERawData.cxx:14
 AliACORDERawData.cxx:15
 AliACORDERawData.cxx:16
 AliACORDERawData.cxx:17
 AliACORDERawData.cxx:18
 AliACORDERawData.cxx:19
 AliACORDERawData.cxx:20
 AliACORDERawData.cxx:21
 AliACORDERawData.cxx:22
 AliACORDERawData.cxx:23
 AliACORDERawData.cxx:24
 AliACORDERawData.cxx:25
 AliACORDERawData.cxx:26
 AliACORDERawData.cxx:27
 AliACORDERawData.cxx:28
 AliACORDERawData.cxx:29
 AliACORDERawData.cxx:30
 AliACORDERawData.cxx:31
 AliACORDERawData.cxx:32
 AliACORDERawData.cxx:33
 AliACORDERawData.cxx:34
 AliACORDERawData.cxx:35
 AliACORDERawData.cxx:36
 AliACORDERawData.cxx:37
 AliACORDERawData.cxx:38
 AliACORDERawData.cxx:39
 AliACORDERawData.cxx:40
 AliACORDERawData.cxx:41
 AliACORDERawData.cxx:42
 AliACORDERawData.cxx:43
 AliACORDERawData.cxx:44
 AliACORDERawData.cxx:45
 AliACORDERawData.cxx:46
 AliACORDERawData.cxx:47
 AliACORDERawData.cxx:48
 AliACORDERawData.cxx:49
 AliACORDERawData.cxx:50
 AliACORDERawData.cxx:51
 AliACORDERawData.cxx:52
 AliACORDERawData.cxx:53
 AliACORDERawData.cxx:54
 AliACORDERawData.cxx:55
 AliACORDERawData.cxx:56
 AliACORDERawData.cxx:57
 AliACORDERawData.cxx:58
 AliACORDERawData.cxx:59
 AliACORDERawData.cxx:60
 AliACORDERawData.cxx:61
 AliACORDERawData.cxx:62
 AliACORDERawData.cxx:63
 AliACORDERawData.cxx:64
 AliACORDERawData.cxx:65
 AliACORDERawData.cxx:66
 AliACORDERawData.cxx:67
 AliACORDERawData.cxx:68
 AliACORDERawData.cxx:69
 AliACORDERawData.cxx:70
 AliACORDERawData.cxx:71
 AliACORDERawData.cxx:72
 AliACORDERawData.cxx:73
 AliACORDERawData.cxx:74
 AliACORDERawData.cxx:75
 AliACORDERawData.cxx:76
 AliACORDERawData.cxx:77
 AliACORDERawData.cxx:78
 AliACORDERawData.cxx:79
 AliACORDERawData.cxx:80
 AliACORDERawData.cxx:81
 AliACORDERawData.cxx:82
 AliACORDERawData.cxx:83
 AliACORDERawData.cxx:84
 AliACORDERawData.cxx:85
 AliACORDERawData.cxx:86
 AliACORDERawData.cxx:87
 AliACORDERawData.cxx:88
 AliACORDERawData.cxx:89
 AliACORDERawData.cxx:90
 AliACORDERawData.cxx:91
 AliACORDERawData.cxx:92
 AliACORDERawData.cxx:93
 AliACORDERawData.cxx:94
 AliACORDERawData.cxx:95
 AliACORDERawData.cxx:96
 AliACORDERawData.cxx:97
 AliACORDERawData.cxx:98
 AliACORDERawData.cxx:99
 AliACORDERawData.cxx:100
 AliACORDERawData.cxx:101
 AliACORDERawData.cxx:102
 AliACORDERawData.cxx:103
 AliACORDERawData.cxx:104
 AliACORDERawData.cxx:105
 AliACORDERawData.cxx:106
 AliACORDERawData.cxx:107
 AliACORDERawData.cxx:108
 AliACORDERawData.cxx:109
 AliACORDERawData.cxx:110
 AliACORDERawData.cxx:111
 AliACORDERawData.cxx:112
 AliACORDERawData.cxx:113
 AliACORDERawData.cxx:114
 AliACORDERawData.cxx:115
 AliACORDERawData.cxx:116
 AliACORDERawData.cxx:117
 AliACORDERawData.cxx:118
 AliACORDERawData.cxx:119
 AliACORDERawData.cxx:120
 AliACORDERawData.cxx:121
 AliACORDERawData.cxx:122
 AliACORDERawData.cxx:123
 AliACORDERawData.cxx:124