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

////////////////////////////////////////////////////////////
//This class contains the methods to create raw data                //
//for CTP (trigger). For Run1 the CTP data format is taken as                //
//described in the Trigger TDR - pages 134  and 135.                //
//The Run1 version of raw data is in:                            //
//http://epweb2.ph.bham.ac.uk/user/krivda/alice/ctp/ctp_readout1.pdf//
// The Run2 version of raw data is inL
//http://alicetrigger.web.cern.ch/alicetrigger/ls1_upgrade/ctp_readout1_run2.pdf
//////////////////////////////////////////////////////////

#include <TObject.h>
#include <TString.h>
#include <Riostream.h>
#include "AliCTPRawData.h"
#include "AliRunLoader.h"
#include "AliCentralTrigger.h"
#include "AliLog.h"
#include "AliDAQ.h"
#include "AliFstream.h"

ClassImp(AliCTPRawData)
////////////////////////////////////////////////////////////////////////////////////////

//______________________________________________________________________________
AliCTPRawData::AliCTPRawData()
{
  // Default constructor
}

//______________________________________________________________________________
AliCTPRawData::AliCTPRawData(const AliCTPRawData &source):
  TObject(source)
{
  // Copy Constructor
}

//______________________________________________________________________________
AliCTPRawData& AliCTPRawData::operator=(const AliCTPRawData &source)
{
  // Assigment operator
  if(this==&source) return *this;
  ((TObject *)this)->operator=(source);
 
 return *this;
}

//______________________________________________________________________________
void AliCTPRawData::RawData()
{
  // This method writes the CTP (trigger)
  // raw data in a DDL file
  // run1 payload
  ULong64_t l2class = 0;
  UChar_t l2cluster = 0;
  UInt_t l0input = 0;
  UInt_t l1input = 0;
  UShort_t l2input=0;
  AliInfo("Storing the CTP DDL raw data...");
  AliRunLoader *runloader = AliRunLoader::Instance();
  if (runloader) {
    if (!runloader->LoadTrigger()) {
      AliCentralTrigger *aCTP = runloader->GetTrigger();
      if (AliDebugLevel() > 0)
	aCTP->Dump();
      // First get the trigger mask
      l2class = aCTP->GetClassMask();
      // Then get the detector cluster to be read out
      l2cluster = aCTP->GetClusterMask();
      // Then get the input cluster mask
      l0input = aCTP->GetL0TriggerInputs();
      l1input = aCTP->GetL1TriggerInputs();
      l2input = aCTP->GetL2TriggerInputs();
    }
    else
      AliWarning("No trigger can be loaded! Putting empty trigger class into the CTP raw data !");
  }
  else
    AliError("No run loader is available! Putting empty trigger class into the CTP raw data !");

  AliDebug(1,Form("CTP trigger mask = 0x%llx",l2class));
  AliDebug(1,Form("CTP detector cluster = 0x%x",l2cluster));

  TString fileName = AliDAQ::DdlFileName("TRG",0);
  AliInfo(Form("Storing CTP raw data in %s",fileName.Data()));
  AliFstream* outfile;         // logical name of the output file 
  outfile = new AliFstream(fileName.Data());

  // Writing CTP raw data here
  // The format is taken as in
  // dhttp://epweb2.ph.bham.ac.uk/user/krivda/alice/ctp/ctp_readout1.pdf

  // If not 0, from where??
  UInt_t bunchCross = 0;
  UInt_t orbitId = 0;
  Bool_t esr = 0; // Enable Segmented Readout flag

  // First 3 words here - Bunch-crossing and orbit numbers
  UInt_t word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= bunchCross & 0xFFF;
  AliDebug(1,Form("CTP word1 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));

  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (orbitId >> 12) & 0xFFF;
  AliDebug(1,Form("CTP word2 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= orbitId & 0xFFF;
  AliDebug(1,Form("CTP word3 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));

  // Now the 4th word
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= ((UInt_t)esr) << 10;
  word |= 0 << 8; // L2SwC - physics trigger
  word |= (l2cluster & 0x3F) << 2; // L2Cluster
  word |= (UInt_t)((l2class >> 48) & 0x3);
  AliDebug(1,Form("CTP word4 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));

  // Then the  4 words with the trigger classes
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l2class >> 36) & 0xFFF);
  AliDebug(1,Form("CTP word5 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l2class >> 24) & 0xFFF);
  AliDebug(1,Form("CTP word6 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l2class >> 12) & 0xFFF);
  AliDebug(1,Form("CTP word7 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)(l2class & 0xFFF);
  AliDebug(1,Form("CTP word8 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));

  // The last 5 words with trigger inputs
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l0input >> 12) & 0xFFF);
  AliDebug(1,Form("CTP word9 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l0input >> 0) & 0xFFF);
  AliDebug(1,Form("CTP word10 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l1input >> 12) & 0xFFF);
  AliDebug(1,Form("CTP word11 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l1input >> 0) & 0xFFF);
  AliDebug(1,Form("CTP word12 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l2input >> 0) & 0xFFF);
  AliDebug(1,Form("CTP word13 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  
  delete outfile;

  return;
}
//______________________________________________________________________________
void AliCTPRawData::RawDataRun2()
{
  // This method writes the CTP (trigger)
  // raw data in a DDL file
  // New payload for run2 50 more classes, 2 more clusters 
  ULong64_t l2class = 0;
  ULong64_t l2classNext50 = 0;
  UChar_t l2cluster = 0;
  UInt_t l0input = 0;
  UInt_t l1input = 0;
  UShort_t l2input=0;
  AliInfo("Storing the CTP DDL raw data...");
  AliRunLoader *runloader = AliRunLoader::Instance();
  if (runloader) {
    if (!runloader->LoadTrigger()) {
      AliCentralTrigger *aCTP = runloader->GetTrigger();
      if (AliDebugLevel() > 0)
	aCTP->Dump();
      // First get the trigger mask
      l2class = aCTP->GetClassMask();
      l2classNext50 = aCTP->GetClassMaskNext50();
      // Then get the detector cluster to be read out
      l2cluster = aCTP->GetClusterMask();
      // Then get the input cluster mask
      l0input = aCTP->GetL0TriggerInputs();
      l1input = aCTP->GetL1TriggerInputs();
      l2input = aCTP->GetL2TriggerInputs();
    }
    else
      AliWarning("No trigger can be loaded! Putting empty trigger class into the CTP raw data !");
  }
  else
    AliError("No run loader is available! Putting empty trigger class into the CTP raw data !");

  AliDebug(1,Form("CTP trigger mask = 0x%llx",l2class));
  AliDebug(1,Form("CTP detector cluster = 0x%x",l2cluster));

  TString fileName = AliDAQ::DdlFileName("TRG",0);
  AliInfo(Form("Storing CTP raw data in %s",fileName.Data()));
  AliFstream* outfile;         // logical name of the output file 
  outfile = new AliFstream(fileName.Data());

  // Writing CTP raw data here
  // The format is taken as in
  // dhttp://epweb2.ph.bham.ac.uk/user/krivda/alice/ctp/ctp_readout1.pdf

  // If not 0, from where??
  UInt_t bunchCross = 0;
  UInt_t orbitId = 0;
  Bool_t esr = 0; // Enable Segmented Readout flag

  // First 3 words here - Bunch-crossing and orbit numbers
  UInt_t word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= bunchCross & 0xFFF;
  AliDebug(1,Form("CTP word1 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));

  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (orbitId >> 12) & 0xFFF;
  AliDebug(1,Form("CTP word2 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= orbitId & 0xFFF;
  AliDebug(1,Form("CTP word3 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));

  // Now the 4th word
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= 1<<12;   // version 1=run2
  word |= ((UInt_t)esr) << 10;
  word |= 0 << 8; // L2SwC - physics trigger
  word |= l2cluster;  // L2cluster 1-8
  AliDebug(1,Form("CTP word4 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));

  // Then the 9 words with the trigger classes
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l2classNext50 >>46) & 0xF);  //5 100..97
  AliDebug(1,Form("CTP word5 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l2classNext50 >> 34) & 0xFFF);  //6 96..85
  AliDebug(1,Form("CTP word6 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l2classNext50 >> 22) & 0xFFF);  //7 84..73
  AliDebug(1,Form("CTP word7 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l2classNext50 >> 10) & 0xFFF);   //8 72..61
  AliDebug(1,Form("CTP word8 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l2classNext50 & 0x3FF)<<2);   //9 60..51
  word |= (UInt_t)((l2class >> 48) & 0x3);   //9 50..49
  AliDebug(1,Form("CTP word9 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l2class >> 36) & 0xFFF);   //10 48..37
  AliDebug(1,Form("CTP word10 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l2class >> 24) & 0xFFF);   //11 36..25 
  AliDebug(1,Form("CTP word11 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l2class >> 12) & 0xFFF);   //12 24-13 
  AliDebug(1,Form("CTP word12 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)(l2class & 0xFFF);   //13 12..1 
  AliDebug(1,Form("CTP word13 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));

  // The last 5 words with trigger inputs
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l0input >> 12) & 0xFFF);
  AliDebug(1,Form("CTP word14 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l0input >> 0) & 0xFFF);
  AliDebug(1,Form("CTP word15 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l1input >> 12) & 0xFFF);
  AliDebug(1,Form("CTP word16 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l1input >> 0) & 0xFFF);
  AliDebug(1,Form("CTP word17 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  word = 0;
  word |= 0 << 15; // BlockID = 0 in case of CTP readout
  word |= (UInt_t)((l2input >> 0) & 0xFFF);
  AliDebug(1,Form("CTP word18 = 0x%x",word));
  outfile->WriteBuffer((char*)(&word),sizeof(UInt_t));
  
  delete outfile;

  return;
}
 AliCTPRawData.cxx:1
 AliCTPRawData.cxx:2
 AliCTPRawData.cxx:3
 AliCTPRawData.cxx:4
 AliCTPRawData.cxx:5
 AliCTPRawData.cxx:6
 AliCTPRawData.cxx:7
 AliCTPRawData.cxx:8
 AliCTPRawData.cxx:9
 AliCTPRawData.cxx:10
 AliCTPRawData.cxx:11
 AliCTPRawData.cxx:12
 AliCTPRawData.cxx:13
 AliCTPRawData.cxx:14
 AliCTPRawData.cxx:15
 AliCTPRawData.cxx:16
 AliCTPRawData.cxx:17
 AliCTPRawData.cxx:18
 AliCTPRawData.cxx:19
 AliCTPRawData.cxx:20
 AliCTPRawData.cxx:21
 AliCTPRawData.cxx:22
 AliCTPRawData.cxx:23
 AliCTPRawData.cxx:24
 AliCTPRawData.cxx:25
 AliCTPRawData.cxx:26
 AliCTPRawData.cxx:27
 AliCTPRawData.cxx:28
 AliCTPRawData.cxx:29
 AliCTPRawData.cxx:30
 AliCTPRawData.cxx:31
 AliCTPRawData.cxx:32
 AliCTPRawData.cxx:33
 AliCTPRawData.cxx:34
 AliCTPRawData.cxx:35
 AliCTPRawData.cxx:36
 AliCTPRawData.cxx:37
 AliCTPRawData.cxx:38
 AliCTPRawData.cxx:39
 AliCTPRawData.cxx:40
 AliCTPRawData.cxx:41
 AliCTPRawData.cxx:42
 AliCTPRawData.cxx:43
 AliCTPRawData.cxx:44
 AliCTPRawData.cxx:45
 AliCTPRawData.cxx:46
 AliCTPRawData.cxx:47
 AliCTPRawData.cxx:48
 AliCTPRawData.cxx:49
 AliCTPRawData.cxx:50
 AliCTPRawData.cxx:51
 AliCTPRawData.cxx:52
 AliCTPRawData.cxx:53
 AliCTPRawData.cxx:54
 AliCTPRawData.cxx:55
 AliCTPRawData.cxx:56
 AliCTPRawData.cxx:57
 AliCTPRawData.cxx:58
 AliCTPRawData.cxx:59
 AliCTPRawData.cxx:60
 AliCTPRawData.cxx:61
 AliCTPRawData.cxx:62
 AliCTPRawData.cxx:63
 AliCTPRawData.cxx:64
 AliCTPRawData.cxx:65
 AliCTPRawData.cxx:66
 AliCTPRawData.cxx:67
 AliCTPRawData.cxx:68
 AliCTPRawData.cxx:69
 AliCTPRawData.cxx:70
 AliCTPRawData.cxx:71
 AliCTPRawData.cxx:72
 AliCTPRawData.cxx:73
 AliCTPRawData.cxx:74
 AliCTPRawData.cxx:75
 AliCTPRawData.cxx:76
 AliCTPRawData.cxx:77
 AliCTPRawData.cxx:78
 AliCTPRawData.cxx:79
 AliCTPRawData.cxx:80
 AliCTPRawData.cxx:81
 AliCTPRawData.cxx:82
 AliCTPRawData.cxx:83
 AliCTPRawData.cxx:84
 AliCTPRawData.cxx:85
 AliCTPRawData.cxx:86
 AliCTPRawData.cxx:87
 AliCTPRawData.cxx:88
 AliCTPRawData.cxx:89
 AliCTPRawData.cxx:90
 AliCTPRawData.cxx:91
 AliCTPRawData.cxx:92
 AliCTPRawData.cxx:93
 AliCTPRawData.cxx:94
 AliCTPRawData.cxx:95
 AliCTPRawData.cxx:96
 AliCTPRawData.cxx:97
 AliCTPRawData.cxx:98
 AliCTPRawData.cxx:99
 AliCTPRawData.cxx:100
 AliCTPRawData.cxx:101
 AliCTPRawData.cxx:102
 AliCTPRawData.cxx:103
 AliCTPRawData.cxx:104
 AliCTPRawData.cxx:105
 AliCTPRawData.cxx:106
 AliCTPRawData.cxx:107
 AliCTPRawData.cxx:108
 AliCTPRawData.cxx:109
 AliCTPRawData.cxx:110
 AliCTPRawData.cxx:111
 AliCTPRawData.cxx:112
 AliCTPRawData.cxx:113
 AliCTPRawData.cxx:114
 AliCTPRawData.cxx:115
 AliCTPRawData.cxx:116
 AliCTPRawData.cxx:117
 AliCTPRawData.cxx:118
 AliCTPRawData.cxx:119
 AliCTPRawData.cxx:120
 AliCTPRawData.cxx:121
 AliCTPRawData.cxx:122
 AliCTPRawData.cxx:123
 AliCTPRawData.cxx:124
 AliCTPRawData.cxx:125
 AliCTPRawData.cxx:126
 AliCTPRawData.cxx:127
 AliCTPRawData.cxx:128
 AliCTPRawData.cxx:129
 AliCTPRawData.cxx:130
 AliCTPRawData.cxx:131
 AliCTPRawData.cxx:132
 AliCTPRawData.cxx:133
 AliCTPRawData.cxx:134
 AliCTPRawData.cxx:135
 AliCTPRawData.cxx:136
 AliCTPRawData.cxx:137
 AliCTPRawData.cxx:138
 AliCTPRawData.cxx:139
 AliCTPRawData.cxx:140
 AliCTPRawData.cxx:141
 AliCTPRawData.cxx:142
 AliCTPRawData.cxx:143
 AliCTPRawData.cxx:144
 AliCTPRawData.cxx:145
 AliCTPRawData.cxx:146
 AliCTPRawData.cxx:147
 AliCTPRawData.cxx:148
 AliCTPRawData.cxx:149
 AliCTPRawData.cxx:150
 AliCTPRawData.cxx:151
 AliCTPRawData.cxx:152
 AliCTPRawData.cxx:153
 AliCTPRawData.cxx:154
 AliCTPRawData.cxx:155
 AliCTPRawData.cxx:156
 AliCTPRawData.cxx:157
 AliCTPRawData.cxx:158
 AliCTPRawData.cxx:159
 AliCTPRawData.cxx:160
 AliCTPRawData.cxx:161
 AliCTPRawData.cxx:162
 AliCTPRawData.cxx:163
 AliCTPRawData.cxx:164
 AliCTPRawData.cxx:165
 AliCTPRawData.cxx:166
 AliCTPRawData.cxx:167
 AliCTPRawData.cxx:168
 AliCTPRawData.cxx:169
 AliCTPRawData.cxx:170
 AliCTPRawData.cxx:171
 AliCTPRawData.cxx:172
 AliCTPRawData.cxx:173
 AliCTPRawData.cxx:174
 AliCTPRawData.cxx:175
 AliCTPRawData.cxx:176
 AliCTPRawData.cxx:177
 AliCTPRawData.cxx:178
 AliCTPRawData.cxx:179
 AliCTPRawData.cxx:180
 AliCTPRawData.cxx:181
 AliCTPRawData.cxx:182
 AliCTPRawData.cxx:183
 AliCTPRawData.cxx:184
 AliCTPRawData.cxx:185
 AliCTPRawData.cxx:186
 AliCTPRawData.cxx:187
 AliCTPRawData.cxx:188
 AliCTPRawData.cxx:189
 AliCTPRawData.cxx:190
 AliCTPRawData.cxx:191
 AliCTPRawData.cxx:192
 AliCTPRawData.cxx:193
 AliCTPRawData.cxx:194
 AliCTPRawData.cxx:195
 AliCTPRawData.cxx:196
 AliCTPRawData.cxx:197
 AliCTPRawData.cxx:198
 AliCTPRawData.cxx:199
 AliCTPRawData.cxx:200
 AliCTPRawData.cxx:201
 AliCTPRawData.cxx:202
 AliCTPRawData.cxx:203
 AliCTPRawData.cxx:204
 AliCTPRawData.cxx:205
 AliCTPRawData.cxx:206
 AliCTPRawData.cxx:207
 AliCTPRawData.cxx:208
 AliCTPRawData.cxx:209
 AliCTPRawData.cxx:210
 AliCTPRawData.cxx:211
 AliCTPRawData.cxx:212
 AliCTPRawData.cxx:213
 AliCTPRawData.cxx:214
 AliCTPRawData.cxx:215
 AliCTPRawData.cxx:216
 AliCTPRawData.cxx:217
 AliCTPRawData.cxx:218
 AliCTPRawData.cxx:219
 AliCTPRawData.cxx:220
 AliCTPRawData.cxx:221
 AliCTPRawData.cxx:222
 AliCTPRawData.cxx:223
 AliCTPRawData.cxx:224
 AliCTPRawData.cxx:225
 AliCTPRawData.cxx:226
 AliCTPRawData.cxx:227
 AliCTPRawData.cxx:228
 AliCTPRawData.cxx:229
 AliCTPRawData.cxx:230
 AliCTPRawData.cxx:231
 AliCTPRawData.cxx:232
 AliCTPRawData.cxx:233
 AliCTPRawData.cxx:234
 AliCTPRawData.cxx:235
 AliCTPRawData.cxx:236
 AliCTPRawData.cxx:237
 AliCTPRawData.cxx:238
 AliCTPRawData.cxx:239
 AliCTPRawData.cxx:240
 AliCTPRawData.cxx:241
 AliCTPRawData.cxx:242
 AliCTPRawData.cxx:243
 AliCTPRawData.cxx:244
 AliCTPRawData.cxx:245
 AliCTPRawData.cxx:246
 AliCTPRawData.cxx:247
 AliCTPRawData.cxx:248
 AliCTPRawData.cxx:249
 AliCTPRawData.cxx:250
 AliCTPRawData.cxx:251
 AliCTPRawData.cxx:252
 AliCTPRawData.cxx:253
 AliCTPRawData.cxx:254
 AliCTPRawData.cxx:255
 AliCTPRawData.cxx:256
 AliCTPRawData.cxx:257
 AliCTPRawData.cxx:258
 AliCTPRawData.cxx:259
 AliCTPRawData.cxx:260
 AliCTPRawData.cxx:261
 AliCTPRawData.cxx:262
 AliCTPRawData.cxx:263
 AliCTPRawData.cxx:264
 AliCTPRawData.cxx:265
 AliCTPRawData.cxx:266
 AliCTPRawData.cxx:267
 AliCTPRawData.cxx:268
 AliCTPRawData.cxx:269
 AliCTPRawData.cxx:270
 AliCTPRawData.cxx:271
 AliCTPRawData.cxx:272
 AliCTPRawData.cxx:273
 AliCTPRawData.cxx:274
 AliCTPRawData.cxx:275
 AliCTPRawData.cxx:276
 AliCTPRawData.cxx:277
 AliCTPRawData.cxx:278
 AliCTPRawData.cxx:279
 AliCTPRawData.cxx:280
 AliCTPRawData.cxx:281
 AliCTPRawData.cxx:282
 AliCTPRawData.cxx:283
 AliCTPRawData.cxx:284
 AliCTPRawData.cxx:285
 AliCTPRawData.cxx:286
 AliCTPRawData.cxx:287
 AliCTPRawData.cxx:288
 AliCTPRawData.cxx:289
 AliCTPRawData.cxx:290
 AliCTPRawData.cxx:291
 AliCTPRawData.cxx:292
 AliCTPRawData.cxx:293
 AliCTPRawData.cxx:294
 AliCTPRawData.cxx:295
 AliCTPRawData.cxx:296
 AliCTPRawData.cxx:297
 AliCTPRawData.cxx:298
 AliCTPRawData.cxx:299
 AliCTPRawData.cxx:300
 AliCTPRawData.cxx:301
 AliCTPRawData.cxx:302
 AliCTPRawData.cxx:303
 AliCTPRawData.cxx:304
 AliCTPRawData.cxx:305
 AliCTPRawData.cxx:306
 AliCTPRawData.cxx:307
 AliCTPRawData.cxx:308
 AliCTPRawData.cxx:309
 AliCTPRawData.cxx:310
 AliCTPRawData.cxx:311
 AliCTPRawData.cxx:312
 AliCTPRawData.cxx:313
 AliCTPRawData.cxx:314
 AliCTPRawData.cxx:315
 AliCTPRawData.cxx:316
 AliCTPRawData.cxx:317
 AliCTPRawData.cxx:318
 AliCTPRawData.cxx:319
 AliCTPRawData.cxx:320
 AliCTPRawData.cxx:321
 AliCTPRawData.cxx:322
 AliCTPRawData.cxx:323
 AliCTPRawData.cxx:324
 AliCTPRawData.cxx:325
 AliCTPRawData.cxx:326
 AliCTPRawData.cxx:327
 AliCTPRawData.cxx:328
 AliCTPRawData.cxx:329
 AliCTPRawData.cxx:330
 AliCTPRawData.cxx:331
 AliCTPRawData.cxx:332
 AliCTPRawData.cxx:333
 AliCTPRawData.cxx:334
 AliCTPRawData.cxx:335
 AliCTPRawData.cxx:336
 AliCTPRawData.cxx:337
 AliCTPRawData.cxx:338
 AliCTPRawData.cxx:339
 AliCTPRawData.cxx:340
 AliCTPRawData.cxx:341
 AliCTPRawData.cxx:342
 AliCTPRawData.cxx:343
 AliCTPRawData.cxx:344
 AliCTPRawData.cxx:345
 AliCTPRawData.cxx:346
 AliCTPRawData.cxx:347
 AliCTPRawData.cxx:348
 AliCTPRawData.cxx:349
 AliCTPRawData.cxx:350
 AliCTPRawData.cxx:351