]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSOnlineSPDscanMultiple.cxx
Little numerical protection
[u/mrichter/AliRoot.git] / ITS / AliITSOnlineSPDscanMultiple.cxx
1 ////////////////////////////////////////////////////////////
2 // Author: Henrik Tydesjo                                 //
3 // Interface class to the containers of an online scan    //
4 // with multiple steps.                                   //
5 ////////////////////////////////////////////////////////////
6
7 #include <TFile.h>
8 #include "AliITSOnlineSPDscanMultiple.h"
9 #include "AliITSOnlineSPDscanInfoMultiple.h"
10
11 AliITSOnlineSPDscanMultiple::AliITSOnlineSPDscanMultiple():AliITSOnlineSPDscan(){
12 // Default constructor
13 }
14 AliITSOnlineSPDscanMultiple::AliITSOnlineSPDscanMultiple(const Char_t *fileName, Bool_t readFromGridFile) {
15   // constructor
16   fFileName=fileName;
17   fModified=kFALSE;
18   fInfoModified=kFALSE;
19   // look for a previously saved info object 
20   // (if file not found create a new one and return, else read)
21
22   Bool_t bRead = readFromGridFile;
23
24   if (!bRead) {
25     FILE* fp0 = fopen(fFileName.Data(), "r");
26     if (fp0 != NULL) {
27       bRead=kTRUE;
28       fclose(fp0);
29     }
30   }
31
32   if (bRead) { // open file for reading
33     fFile = TFile::Open(fFileName.Data(), "READ");
34     if (fFile==NULL) { // grid file not found, create new local default file
35       printf("ERROR: AliITSOnlineSPDscan: File %s not found! Creating 'test999.root' file instead\n",fFileName.Data());
36       // create default empty file:
37       fFileName = "test999.root";
38       fScanInfo = new AliITSOnlineSPDscanInfoMultiple();
39       fInfoModified=kTRUE;
40       fFile = new TFile(fFileName.Data(), "RECREATE");
41       fWrite=kTRUE;
42     }
43     else { // read from file (grid or local)
44       fWrite=kFALSE;
45       fFile->GetObject("AliITSOnlineSPDscanInfo", fScanInfo);
46     }
47   }
48   else { // create new local file
49     fScanInfo = new AliITSOnlineSPDscanInfoMultiple();
50     fInfoModified=kTRUE;
51     fFile = new TFile(fFileName.Data(), "RECREATE");
52     fWrite=kTRUE;
53   }
54
55   Init();
56 }
57
58 AliITSOnlineSPDscanMultiple::AliITSOnlineSPDscanMultiple(const AliITSOnlineSPDscanMultiple& scan) :
59   AliITSOnlineSPDscan(scan)
60 {}
61
62 AliITSOnlineSPDscanMultiple::~AliITSOnlineSPDscanMultiple() {}
63
64 AliITSOnlineSPDscanMultiple& AliITSOnlineSPDscanMultiple::operator=(const AliITSOnlineSPDscanMultiple& scan) {
65   // Assignment operator, should not be called!!!
66   printf("This object should not be copied!");
67   if (this!=&scan) {
68     // still do nothing...
69   }
70   return *this;
71 }
72
73 UInt_t AliITSOnlineSPDscanMultiple::AddScanStep() {
74   CreateNewStep();
75   return ((AliITSOnlineSPDscanInfoMultiple*)fScanInfo)->AddScanStep();
76 }
77
78 void AliITSOnlineSPDscanMultiple::SetDacId(Int_t val) {
79   ((AliITSOnlineSPDscanInfoMultiple*)fScanInfo)->SetDacId(val); 
80   fInfoModified=kTRUE;
81 }
82 void AliITSOnlineSPDscanMultiple::SetDacValue(UInt_t nsi, Int_t val) {
83   // set dac value for step nsi
84   SwitchToStep(nsi);
85   ((AliITSOnlineSPDscanInfoMultiple*)fScanInfo)->SetDacValue(nsi,val); 
86   fInfoModified=kTRUE;
87 }
88 Int_t AliITSOnlineSPDscanMultiple::GetDacId() {
89   return ((AliITSOnlineSPDscanInfoMultiple*)fScanInfo)->GetDacId();
90 }
91 Int_t AliITSOnlineSPDscanMultiple::GetDacValue(UInt_t nsi) {
92   return ((AliITSOnlineSPDscanInfoMultiple*)fScanInfo)->GetDacValue(nsi);
93 }