ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
// ---------------------
// Class AliVZERODataFEE
// ---------------------
// Used to process the TMap of DCS values comming from the shuttle.
// It stores into a TMap the FEE parameters for the given run number
//

#include <TTimeStamp.h>
#include <TObjString.h>
#include <TMap.h>

#include "AliDCSValue.h"
#include "AliLog.h"
#include "AliVZERODataFEE.h"

ClassImp(AliVZERODataFEE)

//_____________________________________________________________________________
AliVZERODataFEE::AliVZERODataFEE() :
	TObject(),
	fRun(0),
	fStartTime(0),
	fEndTime(0),
	fIsProcessed(kFALSE),
	fParameters(NULL)
{
	// Default constructor
}

//_____________________________________________________________________________
AliVZERODataFEE::AliVZERODataFEE(Int_t nRun, UInt_t startTime, UInt_t endTime) : 
	TObject(),
	fRun(nRun),
	fStartTime(startTime),
	fEndTime(endTime),
	fIsProcessed(kFALSE),
	fParameters(new TMap())
{
	// Constructor
	AliInfo(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", nRun,
				 TTimeStamp(startTime).AsString(),
				 TTimeStamp(endTime).AsString()));
	fParameters->SetOwnerValue();
	Init();
}

//_____________________________________________________________________________
AliVZERODataFEE::~AliVZERODataFEE()
{
	delete fParameters;
}

//_____________________________________________________________________________
void AliVZERODataFEE::Init(){
	// Initialization of DCS aliases
	int iAlias = 0;

	// CCIU Parameters
	
	fAliasNames[iAlias++] = "V00/FEE/CCIU/BBAThreshold";
	fAliasNames[iAlias++] = "V00/FEE/CCIU/BBCThreshold";
	fAliasNames[iAlias++] = "V00/FEE/CCIU/BGAThreshold";
	fAliasNames[iAlias++] = "V00/FEE/CCIU/BGCThreshold";
	fAliasNames[iAlias++] = "V00/FEE/CCIU/BBAForBGThreshold";
	fAliasNames[iAlias++] = "V00/FEE/CCIU/BBCForBGThreshold";
	fAliasNames[iAlias++] = "V00/FEE/CCIU/CentralityV0AThrLow";
	fAliasNames[iAlias++] = "V00/FEE/CCIU/CentralityV0AThrHigh";
	fAliasNames[iAlias++] = "V00/FEE/CCIU/CentralityV0CThrLow";
	fAliasNames[iAlias++] = "V00/FEE/CCIU/CentralityV0CThrHigh";
	fAliasNames[iAlias++] = "V00/FEE/CCIU/MultV0AThrLow";
	fAliasNames[iAlias++] = "V00/FEE/CCIU/MultV0AThrHigh";
	fAliasNames[iAlias++] = "V00/FEE/CCIU/MultV0CThrLow";
	fAliasNames[iAlias++] = "V00/FEE/CCIU/MultV0CThrHigh";
	for(int i=1;i<=5;i++) {
		fAliasNames[iAlias] = "V00/FEE/CCIU/TriggerSelect";
		fAliasNames[iAlias++] += Form("%d",i);
	}
	
	// CIU  Parameters
	
	for(int iCIU = 0; iCIU<8 ; iCIU++){
		for(int iParam=0; iParam<kNCIUParam;iParam++){
			fAliasNames[iAlias] = "V00/FEE/";
			fAliasNames[iAlias] += Form("CIU%d/",iCIU);
			
			fAliasNames[iAlias] += GetFEEParamName(iParam);
			iAlias++;
		}
		for(int iParam=kNCIUParam; iParam<kNCIUParam+kNChannelParam;iParam++){
			for(int iCh=1;iCh<=8;iCh++){
				fAliasNames[iAlias] = "V00/FEE/";
				fAliasNames[iAlias] += Form("CIU%d/",iCIU);
			
				fAliasNames[iAlias] += GetFEEParamName(iParam);
				fAliasNames[iAlias] += Form("%d",iCh);
			
				iAlias++;
			}
		}
		
	}

	if(iAlias!=kNAliases) 
		AliError(Form("Number of FEE Aliases defined not correct"));
	
}
//_____________________________________________________________________________
void AliVZERODataFEE::ProcessData(TMap& aliasMap){
// Process the TMap of DCS data
	
	if(!(fAliasNames[0])) Init();
	
	TObjArray *aliasArr;
	AliDCSValue* aValue;

	// starting loop on aliases
	for(int iAlias=0; iAlias<kNAliases; iAlias++){
		
		aliasArr = (TObjArray*) aliasMap.GetValue(fAliasNames[iAlias].Data());
		if(!aliasArr){
			AliError(Form("Alias %s not found!", fAliasNames[iAlias].Data()));
			return;
		}
				
		if(aliasArr->GetEntries()<1){
			AliError(Form("Alias %s has no entries!", fAliasNames[iAlias].Data()));
			continue;
		}
		
		TIter iterarray(aliasArr);
				
		AliDCSValue * lastVal = NULL;
		while((aValue = (AliDCSValue*) iterarray.Next())) lastVal = aValue; // Take only the last value
		
		fParameters->Add(new TObjString(fAliasNames[iAlias].Data()),lastVal);
		
	}
	
	fIsProcessed=kTRUE;
	
}
//_____________________________________________________________________________

TString AliVZERODataFEE::GetFEEParamName(Int_t iParam){
// Return the name of the FEE Parameter iParam
	TString result;
	if(iParam>kNCIUParam + kNChannelParam -1) {
		AliError(Form("Requesting FEE parameter number %d. Max parameter number is : %d",iParam,kNCIUParam + kNChannelParam-1));
		return result;
	}
	switch (iParam) {
		case 0: result = "Clk1Win1"; break;
		case 1: result = "Clk2Win1"; break;
		case 2: result = "Clk1Win2"; break;
		case 3: result = "Clk2Win2"; break;
		case 4: result = "DelayClk1Win1"; break;
		case 5: result = "DelayClk2Win1"; break;
		case 6: result = "DelayClk1Win2"; break;
		case 7: result = "DelayClk2Win2"; break;
		case 8: result = "LatchWin1"; break;
		case 9: result = "LatchWin2"; break;
		case 10: result = "ResetWin1"; break;
		case 11: result = "ResetWin2"; break;
		case 12: result = "PedestalSubtraction"; break;
		case 13: result = "EnableCharge"; break;
		case 14: result = "EnableTiming"; break;
		case 15: result = "PedEven"; break;
		case 16: result = "PedOdd"; break;
		case 17: result = "PedCutEven"; break;
		case 18: result = "PedCutOdd"; break;
		case 19: result = "DelayHit"; break;
		case 20: result = "DiscriThr"; break;
	}
	return result;
}

void AliVZERODataFEE::PrintAliases(){
	for(int i=0;i<kNAliases;i++) AliInfo(Form("%s",fAliasNames[i].Data()));
}

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