ROOT logo
#ifndef ALITOFLVHVDATAPOINTS_H
#define ALITOFLVHVDATAPOINTS_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id:  $ */

/////////////////////////////////////////////////////////
//                                                     //
// AliTOFLvHvDataPoints class                          //
// main aim to introduce                               //
// the aliases for the TOF LV and HV DCS data points   //
// to be then stored in the OCDB, and to process them. //
//                                                     //
/////////////////////////////////////////////////////////

#include "TObject.h"

class TMap;
class TClonesArray;
class TString;
class TH1C;

class AliTOFDCSmaps;

class AliTOFLvHvDataPoints : public TObject {
public:
  enum {kNsectors=18, kNplates=5, kNddl=72, kNpads=18*91*96, kNmaxDataPoints=77777};
  
  AliTOFLvHvDataPoints();
  AliTOFLvHvDataPoints(Int_t nRun, UInt_t startTime, UInt_t endTime, UInt_t startTimeDCSQuery, UInt_t endTimeDCSQuery );
  AliTOFLvHvDataPoints(const AliTOFLvHvDataPoints & data);
  AliTOFLvHvDataPoints& operator=(const AliTOFLvHvDataPoints & data);
  ~AliTOFLvHvDataPoints();
  
  void SetRun(Int_t run) {fRun = run;}
  void SetStartTime(Int_t startTime) {fStartTime = startTime;}
  void SetEndTime(Int_t endTime) {fEndTime = endTime;}
  void SetStartTimeDCSQuery(Int_t startTimeDCSQuery) {fStartTimeDCSQuery = startTimeDCSQuery;}
  void SetEndTimeDCSQuery(Int_t endTimeDCSQuery) {fEndTimeDCSQuery = endTimeDCSQuery;}
  void SetNSecondsBeforeEOR(Int_t nSecondsBeforeEOR) {fNSecondsBeforeEOR = nSecondsBeforeEOR;}
  Int_t GetRun() const {return fRun;}
  Int_t GetStartTime() const {return fStartTime;}
  Int_t GetEndTime() const {return fEndTime;}
  Int_t GetStartTimeDCSQuery() const {return fStartTimeDCSQuery;}
  Int_t GetEndTimeDCSQuery() const {return fEndTimeDCSQuery;}
  Int_t GetNSecondsBeforeEOR() const {return fNSecondsBeforeEOR;}
  Bool_t ProcessData(TMap& aliasMap);

  
  const char* GetAliasNameXLV(Int_t pos) const 
    {return pos<kNddl ? fAliasNamesXLVmap[pos].Data() : 0;}
  
  const char* GetAliasNameXHV(Int_t pos1, Int_t pos2) const 
    {return pos1<kNsectors&&pos2<kNplates ? fAliasNamesXHVmap[pos1][pos2].Data() : 0;}
  
  void Draw(const Option_t* /*option*/);
  void DrawHVandLVMap(Int_t index);
  void DrawHVMap(Int_t index);
  void DrawLVMap(Int_t index);
  
  void SetFDRFlag(Bool_t flag) {fFDR = flag;}
  Bool_t GetFDRFlag() const {return fFDR;}

  Int_t GetNumberOfHVandLVmaps() const { return fNumberOfHVandLVmaps; };
  AliTOFDCSmaps * GetHVandLVmapAtSOR() const { return fMap[0]; };
  AliTOFDCSmaps * GetHVandLVmapAtEOR() ;
  AliTOFDCSmaps * GetHVandLVmap(Int_t index) const { if (index>=fNumberOfHVandLVmaps) return 0x0; else return fMap[index]; };
  Int_t GetNumberOfLVmaps() const { return fNumberOfLVdataPoints; };
  AliTOFDCSmaps * GetLVmap(Int_t index) const { if (index>=fNumberOfLVdataPoints) return 0x0; else return fLVDataPoints[index]; };
  Int_t GetNumberOfHVmaps() const { return fNumberOfHVdataPoints; };
  AliTOFDCSmaps * GetHVmap(Int_t index) const { if (index>=fNumberOfHVdataPoints) return 0x0; else return fHVDataPoints[index]; };

private:
  void Init();
  void CreateHisto(int nbin);
  void FillHVarrayPerDataPoint(Int_t sector, Int_t plate, UInt_t baseWord, Short_t *array) const;
  void FillLVarrayPerDataPoint(Int_t nDDL, UInt_t baseWord, Short_t *array) const;
  void GetStripsConnectedToFEAC(Int_t nDDL, Int_t nFEAC, Int_t *iStrip, Int_t &firstPadX, Int_t &lastPadX) const;

  Bool_t ReadHVDataPoints(TMap& aliasMap);
  Bool_t ReadLVDataPoints(TMap& aliasMap);

  Bool_t MergeMaps();
  Bool_t MergeHVmap();
  Bool_t MergeLVmap();

  Int_t InsertHVDataPoint(AliTOFDCSmaps *object);
  Int_t FindHVdpIndex(Int_t z) const;
  Int_t InsertLVDataPoint(AliTOFDCSmaps *object);
  Int_t FindLVdpIndex(Int_t z) const;
  Int_t fRun;       // Run number
  Int_t fStartTime; // start time
  Int_t fEndTime;   // end time  
  Int_t fStartTimeDCSQuery; // start time DCSQuery
  Int_t fEndTimeDCSQuery;   // end time DCSQuery
  
  Bool_t fIsProcessed; // bool to know processing status
  Bool_t fFDR;         // bool to know whether we are in a FDR run

  AliTOFDCSmaps *fLVDataPoints[kNmaxDataPoints]; // LV status map VS time
  AliTOFDCSmaps *fHVDataPoints[kNmaxDataPoints]; // HV status map VS time
  AliTOFDCSmaps *fMap[kNmaxDataPoints]; // LV&&HV status map VS time

  Int_t fNumberOfLVdataPoints; // number of found LV status dps
  Int_t fNumberOfHVdataPoints; // number of found HV status dps
  Int_t fNumberOfHVandLVmaps; // number of found LV&&HV status maps
  
  TString fAliasNamesXLVmap[kNddl]; // aliases for LV map
  TString fAliasNamesXHVmap[kNsectors][kNplates]; // aliases for HV map

  AliTOFDCSmaps *fStartingLVmap; // starting value for LV map
  AliTOFDCSmaps *fStartingHVmap; // starting value for HV map
  
  TH1C * fHisto; // histogram

  Int_t fNSecondsBeforeEOR; // time window to choose if a run ended correctly or not [s]

  ClassDef(AliTOFLvHvDataPoints, 3);
};

#endif
 AliTOFLvHvDataPoints.h:1
 AliTOFLvHvDataPoints.h:2
 AliTOFLvHvDataPoints.h:3
 AliTOFLvHvDataPoints.h:4
 AliTOFLvHvDataPoints.h:5
 AliTOFLvHvDataPoints.h:6
 AliTOFLvHvDataPoints.h:7
 AliTOFLvHvDataPoints.h:8
 AliTOFLvHvDataPoints.h:9
 AliTOFLvHvDataPoints.h:10
 AliTOFLvHvDataPoints.h:11
 AliTOFLvHvDataPoints.h:12
 AliTOFLvHvDataPoints.h:13
 AliTOFLvHvDataPoints.h:14
 AliTOFLvHvDataPoints.h:15
 AliTOFLvHvDataPoints.h:16
 AliTOFLvHvDataPoints.h:17
 AliTOFLvHvDataPoints.h:18
 AliTOFLvHvDataPoints.h:19
 AliTOFLvHvDataPoints.h:20
 AliTOFLvHvDataPoints.h:21
 AliTOFLvHvDataPoints.h:22
 AliTOFLvHvDataPoints.h:23
 AliTOFLvHvDataPoints.h:24
 AliTOFLvHvDataPoints.h:25
 AliTOFLvHvDataPoints.h:26
 AliTOFLvHvDataPoints.h:27
 AliTOFLvHvDataPoints.h:28
 AliTOFLvHvDataPoints.h:29
 AliTOFLvHvDataPoints.h:30
 AliTOFLvHvDataPoints.h:31
 AliTOFLvHvDataPoints.h:32
 AliTOFLvHvDataPoints.h:33
 AliTOFLvHvDataPoints.h:34
 AliTOFLvHvDataPoints.h:35
 AliTOFLvHvDataPoints.h:36
 AliTOFLvHvDataPoints.h:37
 AliTOFLvHvDataPoints.h:38
 AliTOFLvHvDataPoints.h:39
 AliTOFLvHvDataPoints.h:40
 AliTOFLvHvDataPoints.h:41
 AliTOFLvHvDataPoints.h:42
 AliTOFLvHvDataPoints.h:43
 AliTOFLvHvDataPoints.h:44
 AliTOFLvHvDataPoints.h:45
 AliTOFLvHvDataPoints.h:46
 AliTOFLvHvDataPoints.h:47
 AliTOFLvHvDataPoints.h:48
 AliTOFLvHvDataPoints.h:49
 AliTOFLvHvDataPoints.h:50
 AliTOFLvHvDataPoints.h:51
 AliTOFLvHvDataPoints.h:52
 AliTOFLvHvDataPoints.h:53
 AliTOFLvHvDataPoints.h:54
 AliTOFLvHvDataPoints.h:55
 AliTOFLvHvDataPoints.h:56
 AliTOFLvHvDataPoints.h:57
 AliTOFLvHvDataPoints.h:58
 AliTOFLvHvDataPoints.h:59
 AliTOFLvHvDataPoints.h:60
 AliTOFLvHvDataPoints.h:61
 AliTOFLvHvDataPoints.h:62
 AliTOFLvHvDataPoints.h:63
 AliTOFLvHvDataPoints.h:64
 AliTOFLvHvDataPoints.h:65
 AliTOFLvHvDataPoints.h:66
 AliTOFLvHvDataPoints.h:67
 AliTOFLvHvDataPoints.h:68
 AliTOFLvHvDataPoints.h:69
 AliTOFLvHvDataPoints.h:70
 AliTOFLvHvDataPoints.h:71
 AliTOFLvHvDataPoints.h:72
 AliTOFLvHvDataPoints.h:73
 AliTOFLvHvDataPoints.h:74
 AliTOFLvHvDataPoints.h:75
 AliTOFLvHvDataPoints.h:76
 AliTOFLvHvDataPoints.h:77
 AliTOFLvHvDataPoints.h:78
 AliTOFLvHvDataPoints.h:79
 AliTOFLvHvDataPoints.h:80
 AliTOFLvHvDataPoints.h:81
 AliTOFLvHvDataPoints.h:82
 AliTOFLvHvDataPoints.h:83
 AliTOFLvHvDataPoints.h:84
 AliTOFLvHvDataPoints.h:85
 AliTOFLvHvDataPoints.h:86
 AliTOFLvHvDataPoints.h:87
 AliTOFLvHvDataPoints.h:88
 AliTOFLvHvDataPoints.h:89
 AliTOFLvHvDataPoints.h:90
 AliTOFLvHvDataPoints.h:91
 AliTOFLvHvDataPoints.h:92
 AliTOFLvHvDataPoints.h:93
 AliTOFLvHvDataPoints.h:94
 AliTOFLvHvDataPoints.h:95
 AliTOFLvHvDataPoints.h:96
 AliTOFLvHvDataPoints.h:97
 AliTOFLvHvDataPoints.h:98
 AliTOFLvHvDataPoints.h:99
 AliTOFLvHvDataPoints.h:100
 AliTOFLvHvDataPoints.h:101
 AliTOFLvHvDataPoints.h:102
 AliTOFLvHvDataPoints.h:103
 AliTOFLvHvDataPoints.h:104
 AliTOFLvHvDataPoints.h:105
 AliTOFLvHvDataPoints.h:106
 AliTOFLvHvDataPoints.h:107
 AliTOFLvHvDataPoints.h:108
 AliTOFLvHvDataPoints.h:109
 AliTOFLvHvDataPoints.h:110
 AliTOFLvHvDataPoints.h:111
 AliTOFLvHvDataPoints.h:112
 AliTOFLvHvDataPoints.h:113
 AliTOFLvHvDataPoints.h:114
 AliTOFLvHvDataPoints.h:115
 AliTOFLvHvDataPoints.h:116
 AliTOFLvHvDataPoints.h:117
 AliTOFLvHvDataPoints.h:118
 AliTOFLvHvDataPoints.h:119
 AliTOFLvHvDataPoints.h:120
 AliTOFLvHvDataPoints.h:121
 AliTOFLvHvDataPoints.h:122
 AliTOFLvHvDataPoints.h:123