ROOT logo
///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// Class for ZDC DCS data                                                    //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include "AliZDCDataDCS.h"

#include "AliCDBMetaData.h"
#include "AliDCSValue.h"
#include "AliLog.h"

#include <TCanvas.h>
#include <TDatime.h>
#include <TString.h>
#include <TObjString.h>
#include <TStyle.h>
#include <TTimeStamp.h>

ClassImp(AliZDCDataDCS)

//---------------------------------------------------------------
AliZDCDataDCS::AliZDCDataDCS():
   TObject(),
   fRun(0),
   fStartTime(0),
   fEndTime(0),
   fStartTimeDCSQuery(0),
   fEndTimeDCSQuery(0),
//   fTimeStamp(0x0), 
//   fHVData(0x0), 
   fIsProcessed(kFALSE)
{
  // Default constructor
  for(Int_t i=0; i<kNAliases; i++) fAliasNames[i] = "";
  for(Int_t i=0; i<kNAlignDet; i++) fAlignData[i] = 0.;
}

//---------------------------------------------------------------
AliZDCDataDCS::AliZDCDataDCS(Int_t nRun, UInt_t startTime, UInt_t endTime,
			 UInt_t startTimeDCSQuery, UInt_t endTimeDCSQuery):
   TObject(),
   fRun(nRun),
   fStartTime(startTime),
   fEndTime(endTime),
   fStartTimeDCSQuery(startTimeDCSQuery),
   fEndTimeDCSQuery(endTimeDCSQuery),
//   fTimeStamp(0x0), 
//   fHVData(0x0), 
   fIsProcessed(kFALSE)
{
   // Standard constructor
   
   AliDebug(2,Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s \n\tStartTime DCS Query %s \n\tEndTime DCS Query %s", nRun,
   TTimeStamp(startTime).AsString(),
   TTimeStamp(endTime).AsString(), 
   TTimeStamp(startTimeDCSQuery).AsString(), 
   TTimeStamp(endTimeDCSQuery).AsString()));

   for(Int_t i=0; i<kNAlignDet; i++) fAlignData[i] = 0.;

   Init();

}

//---------------------------------------------------------------
AliZDCDataDCS::AliZDCDataDCS(const AliZDCDataDCS & data):
  TObject(data), 
  fRun(data.fRun),
  fStartTime(data.fStartTime),
  fEndTime(data.fEndTime),
  fStartTimeDCSQuery(data.fStartTimeDCSQuery),
  fEndTimeDCSQuery(data.fEndTimeDCSQuery),
//  fTimeStamp(data.fTimeStamp), 
//  fHVData(data.fHVData), 
  fIsProcessed(data.fIsProcessed)
{

  // copy constructor

  for(int i=0;i<kNAliases;i++) fAliasNames[i] = data.fAliasNames[i];
  for(int i=0;i<kNAlignDet;i++) fAlignData[i] = data.fAlignData[i];
    
}

//---------------------------------------------------------------
AliZDCDataDCS& AliZDCDataDCS:: operator=(const AliZDCDataDCS & data) { 

  // assignment operator

  if (this == &data)
    return *this;

  TObject::operator=(data);
  fRun = data.GetRun();
  fStartTime = data.GetStartTime();
  fEndTime = data.GetEndTime();
  fStartTimeDCSQuery = data.GetStartTimeDCSQuery();
  fEndTimeDCSQuery = data.GetEndTimeDCSQuery();
//  fTimeStamp  = data.GetTimeStamp();
//  fHVData  = data.GetHVData();
  fIsProcessed = data.fIsProcessed; 

  for(int i=0;i<kNAliases;i++) fAliasNames[i] = data.GetAliasName(i);
  for(int i=0;i<kNAlignDet;i++) fAlignData[i] = data.GetAlignData(i);

  return *this;
}

//---------------------------------------------------------------
AliZDCDataDCS::~AliZDCDataDCS() 
{
  // Destructor
}

//---------------------------------------------------------------
Bool_t AliZDCDataDCS::ProcessData(TMap& aliasMap)
{
   // Data processing

   if(!(fAliasNames[0])) Init();
   
   AliInfo(Form(" Start Time = %i",fStartTime));
   AliInfo(Form(" End Time = %i",fEndTime));
   AliInfo(Form(" Start Time DCS Query= %i",fStartTimeDCSQuery));
   AliInfo(Form(" End Time DCS Query= %i",fEndTimeDCSQuery));

   if (fEndTime==fStartTime){
     AliError(Form(" Run with null time length: start time = %i = end time = %i",fStartTime,fEndTime));
     return kFALSE;
   }
   
   TObjArray   *aliasArr;
   AliDCSValue *aValue;
  
   for(int j=0; j<kNAliases; j++){
      //printf(" Processing alias %d  aliasName %s \n", j, fAliasNames[j].Data());
      
      aliasArr = (TObjArray*) (aliasMap.GetValue(fAliasNames[j].Data()));
      if(!aliasArr){
   	AliWarning(Form("Alias %s: data not found!", fAliasNames[j].Data()));
	continue;
      }

      Introduce(j, aliasArr);

      Int_t nentries = aliasArr->GetEntries();
/*      if(nentries<=2){
        AliWarning(Form("Alias %s has just %d entries!", fAliasNames[j].Data(), nentries));
//        continue;
      }
*/
      Float_t *time = new Float_t[nentries];
      Float_t *val  = new Float_t[nentries];

      TIter iterarray(aliasArr);
      
      UInt_t ne=0;
      Float_t sum=0.;
      Int_t nMeasures=0;
      while((aValue = (AliDCSValue*) iterarray.Next())){
        val[ne] = aValue->GetFloat();
        time[ne] = (Float_t) (aValue->GetTimeStamp());
        if(j<4){
	  sum += val[ne];
	  nMeasures++;
	}
	else{
	  //fHVData[ne] = val[ne];
          //fTimeStamp[ne] = time[ne];
	}
        ne++;
      }
      //
      if(j<4 && nMeasures!=0) fAlignData[j] = sum/nMeasures;
      
      delete[] val;
      delete[] time;   
   }
  
   fIsProcessed=kTRUE;
   return kTRUE;
   
}

//---------------------------------------------------------------
void AliZDCDataDCS::Init()
{
   // Initialization

   fAliasNames[0] = "ZDC_ZNA_POS.actual.position";
   fAliasNames[1] = "ZDC_ZPA_POS.actual.position";
   fAliasNames[2] = "ZDC_ZNC_POS.actual.position";
   fAliasNames[3] = "ZDC_ZPC_POS.actual.position";
   //
   fAliasNames[4]  = "ZDC_ZNA_HV0.actual.vMon";
   fAliasNames[5]  = "ZDC_ZNA_HV1.actual.vMon";
   fAliasNames[6]  = "ZDC_ZNA_HV2.actual.vMon";
   fAliasNames[7]  = "ZDC_ZNA_HV3.actual.vMon";
   fAliasNames[8]  = "ZDC_ZNA_HV4.actual.vMon";
   //
   fAliasNames[9]   = "ZDC_ZPA_HV0.actual.vMon";
   fAliasNames[10]  = "ZDC_ZPA_HV1.actual.vMon";
   fAliasNames[11]  = "ZDC_ZPA_HV2.actual.vMon";
   fAliasNames[12]  = "ZDC_ZPA_HV3.actual.vMon";
   fAliasNames[13]  = "ZDC_ZPA_HV4.actual.vMon";
   //
   fAliasNames[14]  = "ZDC_ZNC_HV0.actual.vMon";
   fAliasNames[15]  = "ZDC_ZNC_HV1.actual.vMon";
   fAliasNames[16]  = "ZDC_ZNC_HV2.actual.vMon";
   fAliasNames[17]  = "ZDC_ZNC_HV3.actual.vMon";
   fAliasNames[18]  = "ZDC_ZNC_HV4.actual.vMon";
   //
   fAliasNames[19]  = "ZDC_ZPC_HV0.actual.vMon";
   fAliasNames[20]  = "ZDC_ZPC_HV1.actual.vMon";
   fAliasNames[21]  = "ZDC_ZPC_HV2.actual.vMon";
   fAliasNames[22]  = "ZDC_ZPC_HV3.actual.vMon";
   fAliasNames[23]  = "ZDC_ZPC_HV4.actual.vMon";
   //
   fAliasNames[24]  = "ZDC_ZEM_HV0.actual.vMon";
   fAliasNames[25]  = "ZDC_ZEM_HV1.actual.vMon";
   //
   fAliasNames[26]  = "ZDC_REFA_HV.actual.vMon";
   fAliasNames[27]  = "ZDC_REFC_HV.actual.vMon";
 
}

//---------------------------------------------------------------
void AliZDCDataDCS::Introduce(UInt_t numAlias, const TObjArray* aliasArr)
{
   // Getting array of DCS aliases
   
   int entries = aliasArr->GetEntries();
   printf("************ Alias: %s has  %d DP values collected\n",
   	fAliasNames[numAlias].Data(),entries);

}
 AliZDCDataDCS.cxx:1
 AliZDCDataDCS.cxx:2
 AliZDCDataDCS.cxx:3
 AliZDCDataDCS.cxx:4
 AliZDCDataDCS.cxx:5
 AliZDCDataDCS.cxx:6
 AliZDCDataDCS.cxx:7
 AliZDCDataDCS.cxx:8
 AliZDCDataDCS.cxx:9
 AliZDCDataDCS.cxx:10
 AliZDCDataDCS.cxx:11
 AliZDCDataDCS.cxx:12
 AliZDCDataDCS.cxx:13
 AliZDCDataDCS.cxx:14
 AliZDCDataDCS.cxx:15
 AliZDCDataDCS.cxx:16
 AliZDCDataDCS.cxx:17
 AliZDCDataDCS.cxx:18
 AliZDCDataDCS.cxx:19
 AliZDCDataDCS.cxx:20
 AliZDCDataDCS.cxx:21
 AliZDCDataDCS.cxx:22
 AliZDCDataDCS.cxx:23
 AliZDCDataDCS.cxx:24
 AliZDCDataDCS.cxx:25
 AliZDCDataDCS.cxx:26
 AliZDCDataDCS.cxx:27
 AliZDCDataDCS.cxx:28
 AliZDCDataDCS.cxx:29
 AliZDCDataDCS.cxx:30
 AliZDCDataDCS.cxx:31
 AliZDCDataDCS.cxx:32
 AliZDCDataDCS.cxx:33
 AliZDCDataDCS.cxx:34
 AliZDCDataDCS.cxx:35
 AliZDCDataDCS.cxx:36
 AliZDCDataDCS.cxx:37
 AliZDCDataDCS.cxx:38
 AliZDCDataDCS.cxx:39
 AliZDCDataDCS.cxx:40
 AliZDCDataDCS.cxx:41
 AliZDCDataDCS.cxx:42
 AliZDCDataDCS.cxx:43
 AliZDCDataDCS.cxx:44
 AliZDCDataDCS.cxx:45
 AliZDCDataDCS.cxx:46
 AliZDCDataDCS.cxx:47
 AliZDCDataDCS.cxx:48
 AliZDCDataDCS.cxx:49
 AliZDCDataDCS.cxx:50
 AliZDCDataDCS.cxx:51
 AliZDCDataDCS.cxx:52
 AliZDCDataDCS.cxx:53
 AliZDCDataDCS.cxx:54
 AliZDCDataDCS.cxx:55
 AliZDCDataDCS.cxx:56
 AliZDCDataDCS.cxx:57
 AliZDCDataDCS.cxx:58
 AliZDCDataDCS.cxx:59
 AliZDCDataDCS.cxx:60
 AliZDCDataDCS.cxx:61
 AliZDCDataDCS.cxx:62
 AliZDCDataDCS.cxx:63
 AliZDCDataDCS.cxx:64
 AliZDCDataDCS.cxx:65
 AliZDCDataDCS.cxx:66
 AliZDCDataDCS.cxx:67
 AliZDCDataDCS.cxx:68
 AliZDCDataDCS.cxx:69
 AliZDCDataDCS.cxx:70
 AliZDCDataDCS.cxx:71
 AliZDCDataDCS.cxx:72
 AliZDCDataDCS.cxx:73
 AliZDCDataDCS.cxx:74
 AliZDCDataDCS.cxx:75
 AliZDCDataDCS.cxx:76
 AliZDCDataDCS.cxx:77
 AliZDCDataDCS.cxx:78
 AliZDCDataDCS.cxx:79
 AliZDCDataDCS.cxx:80
 AliZDCDataDCS.cxx:81
 AliZDCDataDCS.cxx:82
 AliZDCDataDCS.cxx:83
 AliZDCDataDCS.cxx:84
 AliZDCDataDCS.cxx:85
 AliZDCDataDCS.cxx:86
 AliZDCDataDCS.cxx:87
 AliZDCDataDCS.cxx:88
 AliZDCDataDCS.cxx:89
 AliZDCDataDCS.cxx:90
 AliZDCDataDCS.cxx:91
 AliZDCDataDCS.cxx:92
 AliZDCDataDCS.cxx:93
 AliZDCDataDCS.cxx:94
 AliZDCDataDCS.cxx:95
 AliZDCDataDCS.cxx:96
 AliZDCDataDCS.cxx:97
 AliZDCDataDCS.cxx:98
 AliZDCDataDCS.cxx:99
 AliZDCDataDCS.cxx:100
 AliZDCDataDCS.cxx:101
 AliZDCDataDCS.cxx:102
 AliZDCDataDCS.cxx:103
 AliZDCDataDCS.cxx:104
 AliZDCDataDCS.cxx:105
 AliZDCDataDCS.cxx:106
 AliZDCDataDCS.cxx:107
 AliZDCDataDCS.cxx:108
 AliZDCDataDCS.cxx:109
 AliZDCDataDCS.cxx:110
 AliZDCDataDCS.cxx:111
 AliZDCDataDCS.cxx:112
 AliZDCDataDCS.cxx:113
 AliZDCDataDCS.cxx:114
 AliZDCDataDCS.cxx:115
 AliZDCDataDCS.cxx:116
 AliZDCDataDCS.cxx:117
 AliZDCDataDCS.cxx:118
 AliZDCDataDCS.cxx:119
 AliZDCDataDCS.cxx:120
 AliZDCDataDCS.cxx:121
 AliZDCDataDCS.cxx:122
 AliZDCDataDCS.cxx:123
 AliZDCDataDCS.cxx:124
 AliZDCDataDCS.cxx:125
 AliZDCDataDCS.cxx:126
 AliZDCDataDCS.cxx:127
 AliZDCDataDCS.cxx:128
 AliZDCDataDCS.cxx:129
 AliZDCDataDCS.cxx:130
 AliZDCDataDCS.cxx:131
 AliZDCDataDCS.cxx:132
 AliZDCDataDCS.cxx:133
 AliZDCDataDCS.cxx:134
 AliZDCDataDCS.cxx:135
 AliZDCDataDCS.cxx:136
 AliZDCDataDCS.cxx:137
 AliZDCDataDCS.cxx:138
 AliZDCDataDCS.cxx:139
 AliZDCDataDCS.cxx:140
 AliZDCDataDCS.cxx:141
 AliZDCDataDCS.cxx:142
 AliZDCDataDCS.cxx:143
 AliZDCDataDCS.cxx:144
 AliZDCDataDCS.cxx:145
 AliZDCDataDCS.cxx:146
 AliZDCDataDCS.cxx:147
 AliZDCDataDCS.cxx:148
 AliZDCDataDCS.cxx:149
 AliZDCDataDCS.cxx:150
 AliZDCDataDCS.cxx:151
 AliZDCDataDCS.cxx:152
 AliZDCDataDCS.cxx:153
 AliZDCDataDCS.cxx:154
 AliZDCDataDCS.cxx:155
 AliZDCDataDCS.cxx:156
 AliZDCDataDCS.cxx:157
 AliZDCDataDCS.cxx:158
 AliZDCDataDCS.cxx:159
 AliZDCDataDCS.cxx:160
 AliZDCDataDCS.cxx:161
 AliZDCDataDCS.cxx:162
 AliZDCDataDCS.cxx:163
 AliZDCDataDCS.cxx:164
 AliZDCDataDCS.cxx:165
 AliZDCDataDCS.cxx:166
 AliZDCDataDCS.cxx:167
 AliZDCDataDCS.cxx:168
 AliZDCDataDCS.cxx:169
 AliZDCDataDCS.cxx:170
 AliZDCDataDCS.cxx:171
 AliZDCDataDCS.cxx:172
 AliZDCDataDCS.cxx:173
 AliZDCDataDCS.cxx:174
 AliZDCDataDCS.cxx:175
 AliZDCDataDCS.cxx:176
 AliZDCDataDCS.cxx:177
 AliZDCDataDCS.cxx:178
 AliZDCDataDCS.cxx:179
 AliZDCDataDCS.cxx:180
 AliZDCDataDCS.cxx:181
 AliZDCDataDCS.cxx:182
 AliZDCDataDCS.cxx:183
 AliZDCDataDCS.cxx:184
 AliZDCDataDCS.cxx:185
 AliZDCDataDCS.cxx:186
 AliZDCDataDCS.cxx:187
 AliZDCDataDCS.cxx:188
 AliZDCDataDCS.cxx:189
 AliZDCDataDCS.cxx:190
 AliZDCDataDCS.cxx:191
 AliZDCDataDCS.cxx:192
 AliZDCDataDCS.cxx:193
 AliZDCDataDCS.cxx:194
 AliZDCDataDCS.cxx:195
 AliZDCDataDCS.cxx:196
 AliZDCDataDCS.cxx:197
 AliZDCDataDCS.cxx:198
 AliZDCDataDCS.cxx:199
 AliZDCDataDCS.cxx:200
 AliZDCDataDCS.cxx:201
 AliZDCDataDCS.cxx:202
 AliZDCDataDCS.cxx:203
 AliZDCDataDCS.cxx:204
 AliZDCDataDCS.cxx:205
 AliZDCDataDCS.cxx:206
 AliZDCDataDCS.cxx:207
 AliZDCDataDCS.cxx:208
 AliZDCDataDCS.cxx:209
 AliZDCDataDCS.cxx:210
 AliZDCDataDCS.cxx:211
 AliZDCDataDCS.cxx:212
 AliZDCDataDCS.cxx:213
 AliZDCDataDCS.cxx:214
 AliZDCDataDCS.cxx:215
 AliZDCDataDCS.cxx:216
 AliZDCDataDCS.cxx:217
 AliZDCDataDCS.cxx:218
 AliZDCDataDCS.cxx:219
 AliZDCDataDCS.cxx:220
 AliZDCDataDCS.cxx:221
 AliZDCDataDCS.cxx:222
 AliZDCDataDCS.cxx:223
 AliZDCDataDCS.cxx:224
 AliZDCDataDCS.cxx:225
 AliZDCDataDCS.cxx:226
 AliZDCDataDCS.cxx:227
 AliZDCDataDCS.cxx:228
 AliZDCDataDCS.cxx:229
 AliZDCDataDCS.cxx:230
 AliZDCDataDCS.cxx:231
 AliZDCDataDCS.cxx:232
 AliZDCDataDCS.cxx:233
 AliZDCDataDCS.cxx:234
 AliZDCDataDCS.cxx:235
 AliZDCDataDCS.cxx:236
 AliZDCDataDCS.cxx:237