3a1e7366f2e3e42fe04e45eeccf64448e5dd33dc
[u/mrichter/AliRoot.git] / VZERO / AliVZEROBuffer.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15 /* $Id$ */
16
17 // Storing digits in a binary file
18 // according to the DDL mapping
19 // To be used in Alice Data Challenges
20 // This class is used by AliVZERODDL.C macro
21 // Author: B. Cheynis
22
23 #include <Riostream.h>
24 #include <TObjArray.h>
25 #include "AliRawDataHeader.h"
26 #include "AliVZEROBuffer.h"
27
28 //#include "TFile.h"
29 //#include "TTree.h"
30
31 ClassImp(AliVZEROBuffer)
32
33 //_____________________________________________________________________________
34 AliVZEROBuffer::AliVZEROBuffer():TObject(),
35     fVerbose(0),
36     f(),
37     fNumberOfDigits(0)
38 {
39   //
40   // default constructor
41   //
42 }
43 //_____________________________________________________________________________
44 AliVZEROBuffer::AliVZEROBuffer(const char* fileName):TObject(),
45     fVerbose(0),
46     f(),
47     fNumberOfDigits(0)
48 {
49   // Constructor
50   f = new AliFstream(fileName);
51   // fout=new TFile(fileName,"recreate");
52   // tree=new TTree("tree","Values");
53   AliRawDataHeader header;
54   f->WriteBuffer((char*)(&header), sizeof(header));
55
56 }
57
58 //_____________________________________________________________________________
59 AliVZEROBuffer::~AliVZEROBuffer(){
60   // Destructor, it closes the IO stream
61   AliRawDataHeader header;
62   header.fSize = f->Tellp();
63   header.SetAttribute(0);  // valid data
64   f->Seekp(0);
65   f->WriteBuffer((char*)(&header), sizeof(header));
66   delete f;
67   //delete tree;
68   //delete fout;
69 }
70
71 //_____________________________________________________________________________
72 AliVZEROBuffer::AliVZEROBuffer(const AliVZEROBuffer &source):TObject(source),
73    fVerbose(0),
74    f(),
75    fNumberOfDigits(0)
76
77 {
78   // Copy Constructor
79   this->fVerbose=source.fVerbose;
80   return;
81 }
82
83 //_____________________________________________________________________________
84 AliVZEROBuffer& AliVZEROBuffer::operator=(const AliVZEROBuffer &source)
85
86 {
87   //Assigment operator
88   this->fVerbose=source.fVerbose;
89   return *this;
90 }
91
92 //_____________________________________________________________________________
93 void AliVZEROBuffer::WriteBinary(Int_t cell,Int_t ADC, Int_t Time){
94   // It writes VZERO digits as a raw data file. 
95   // Being called by AliVZERODDL.C
96
97   struct DataFile{
98     Int_t cell;
99     Int_t ADC;
100     Int_t Time;
101   };
102   
103   DataFile  data;
104   data.cell = cell;
105   data.ADC  = ADC;
106   data.Time = Time;
107
108   fNumberOfDigits++;
109   f->WriteBuffer((char*)(&data),sizeof(data));
110 }