ROOT logo
/****************************************************
	
  AliACORDEDataDCS class
  create to make a pointer to the
  ACORDE data DCS points

  Author: Pedro Gonzalez (CIEMAT, Madrid)
  ACORDE-DCS creator: Mario Ivan Martinez Hdez
			<mim@fcfm.buap.mx>

  Last update: June 13th 2014 from Mario Rodríguez Cahuantzi (CINVESTAV, mrodriguez@fis.cinvestav.mx)
	==> wrong ACORDE aliases for AMANDA fixed (https://alice.its.cern.ch/jira/browse/ALIROOT-5479)
		-- old alias: ACO_HV_MODULE[0..59]_VMON
		-- new alias: ACO_HV_MODULE[0..59]_INSIDE_VMON ()/ ACO_HV_MODULE[0..59]_OUTSIDE_VMON

  Last update: Fix of coding violations
  Mario Rodriguez C. (FCFM-BUAP)
  <mrodrigu@mail.cern.ch>

*****************************************************/
#include "AliACORDEDataDCS.h"

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

#include <TTimeStamp.h>
#include <TObjString.h>
#include <TH2F.h>
#include <TProfile.h>
#include <TGraph.h>
#include <TDatime.h>
#include <TStyle.h>
#include <TCanvas.h>

ClassImp(AliACORDEDataDCS)

//---------------------------------------------------------------
AliACORDEDataDCS::AliACORDEDataDCS():
	TObject(),
	fRun(0),
	fStartTime(0),
	fEndTime(0),
	fGraphs("TGraph",kNGraphs),
        fFunc(0),
	fIsProcessed(kFALSE)
{
	for(int i=0;i<kNHistos;i++) 
	{
		fHv[i]=0x0;
		fMean[i] = fWidth[i] = 0.0;
	}
        
}

//---------------------------------------------------------------
AliACORDEDataDCS::AliACORDEDataDCS(Int_t nRun, UInt_t startTime, UInt_t endTime):
	TObject(),
	fRun(nRun),
	fStartTime(startTime),
	fEndTime(endTime),
	fGraphs("TGraph",kNGraphs),
        fFunc(0),
	fIsProcessed(kFALSE)
{
// Init of class AliACORDEDataDCS
// Gettin the TimeStamp an put it on a string

	AliInfo(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", nRun,
	TTimeStamp(startTime).AsString(),
	TTimeStamp(endTime).AsString()));

       
	Init();

}

//---------------------------------------------------------------
AliACORDEDataDCS::~AliACORDEDataDCS() {

	for(int i=0;i<kNHistos;i++) 
	{
		delete fHv[i]; fHv[i]=0;
	}
	fGraphs.Clear("C");
	fFunc=0;
}
//---------------------------------------------------------------

AliACORDEDataDCS::AliACORDEDataDCS(const AliACORDEDataDCS & data):
TObject(),
fRun(0),
fStartTime(0),
fEndTime(0),
fGraphs("TGraph",kNGraphs),
fFunc(0),
fIsProcessed(kFALSE)
{
// Setting the initial values
// fRUn, Start of Run, End of Run, IsProcessed

	fRun=data.fRun;
	fStartTime=data.fStartTime;
	fEndTime=data.fEndTime;
	fFunc=data.fFunc;
	fIsProcessed=data.fIsProcessed;


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

        for(int i=0;i<kNHistos;i++)
	{
		fHv[i]=data.fHv[i];
		fMean[i]=data.fMean[i];
		fWidth[i]=data.fWidth[i];
	}



        
}
//--------------------------------------------------------------
AliACORDEDataDCS& AliACORDEDataDCS:: operator=(const AliACORDEDataDCS & data) { 

	// use ctor copy

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

  	new (this) AliACORDEDataDCS(data);
  	return *this;
 
}
//---------------------------------------------------------------
void AliACORDEDataDCS::ProcessData(TMap& aliasMap)
{
// Process of the data from the aliases DCS-data points

	if(!(fHv[0])) Init();

	TObjArray *aliasArr;
	AliDCSValue* aValue;

	for(int j=0; j<kNAliases; j++)
        {
		aliasArr = (TObjArray*) aliasMap.GetValue(fAliasNames[j].Data());
		if(!aliasArr)
                {
			AliError(Form("Alias %s not found!", fAliasNames[j].Data()));
			continue;
		}
		Introduce(j, aliasArr);

		if(aliasArr->GetEntries()<2)
                {
		AliError(Form("Alias %s has just %d entries!",
					fAliasNames[j].Data(),aliasArr->GetEntries()));
			continue;
		}

		TIter iterarray(aliasArr);

		Double_t *time = new Double_t[aliasArr->GetEntries()];
		Double_t *val  = new Double_t[aliasArr->GetEntries()];

		UInt_t ne=0;

		while ((aValue = (AliDCSValue*) iterarray.Next())) 
                {
                val[ne] = aValue->GetFloat();
		time[ne] = (Double_t) (aValue->GetTimeStamp());
		fHv[j]->Fill(val[ne]);
		ne++;
		}

               
		
		CreateGraph(j, aliasArr->GetEntries(), time, val);
		delete[] val;
		delete[] time;
	}


	// calculate mean and rms of the first two histos
	for(int i=0;i<kNHistos;i++)
        {
		fMean[i] = fHv[i]->GetMean();
		fWidth[i] = fHv[i]->GetRMS();
	}


	fIsProcessed=kTRUE;


}

//---------------------------------------------------------------
void AliACORDEDataDCS::Init()
{
// Init of AliACORDEDatDCS procedure
// Loop over the aliases

	TH1::AddDirectory(kFALSE);

	fGraphs.SetOwner(1);

        TString aliasName;

	for(int i=0;i<kNAliases;i++){
		if (i<kNAliases/2)
		{
                	aliasName.Form("ACO_HV_MODULE%02d_INSIDE_VMON",i);  //!::: first 60 entries for inside PMT's
		}else
		{
	               	aliasName.Form("ACO_HV_MODULE%02d_OUTSIDE_VMON",i-60); //!::: last 60 entries for outside PMT's
		}
		fAliasNames[i] = aliasName;
	}

	for(int i=0;i<kNHistos;i++)
        {
		fHv[i] = new TH1F(fAliasNames[i].Data(),fAliasNames[i].Data(), 20, kHvMin, kHvMax);
		fHv[i]->GetXaxis()->SetTitle("Hv");
	}
}

//---------------------------------------------------------------
void AliACORDEDataDCS::Introduce(UInt_t numAlias, const TObjArray* aliasArr)
{

	int entries=aliasArr->GetEntries();
	AliInfo(Form("************ Alias: %s **********",fAliasNames[numAlias].Data()));
	AliInfo(Form("    	%d DP values collected",entries));

}

//---------------------------------------------------------------
void AliACORDEDataDCS::CreateGraph(int i, int dim, const Double_t *x, const Double_t *y)
{
// Create the plots for the ACORDE DCS 

	TGraph *gr = new(fGraphs[fGraphs.GetEntriesFast()]) TGraph(dim, x, y);

	gr->GetXaxis()->SetTimeDisplay(1);
	gr->SetTitle(fAliasNames[i].Data());

	AliInfo(Form("Array entries: %d",fGraphs.GetEntriesFast()));


}

//---------------------------------------------------------------
void AliACORDEDataDCS::Draw(const Option_t* /*option*/)
{
// Draw all histos and graphs

  if(!fIsProcessed) return;

  TString canvasHistoName;
  TCanvas *ch[10];
  
  for (int i=0;i<10;i++)
  {
  canvasHistoName.Form("ACO_HV_MODULE");
  ch[i]=new TCanvas(canvasHistoName,canvasHistoName,20,20,600,600);
  ch[i]->Divide(2,3);

    for(int j=0;j<6;j++)
    { 
    ch[i]->cd(j+1);
    ((TGraph*) fGraphs.UncheckedAt(i*6+j))->SetMarkerStyle(20);
    ((TGraph*) fGraphs.UncheckedAt(i*6+j))->Draw("alp");
    }

  }

 
}

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