#include "AliTRIPreprocessor.h"
#include "AliCDBMetaData.h"
#include "AliCDBEntry.h"
#include "AliLog.h"
#include "AliITSTriggerConditions.h"
#include "AliTOFFEEReader.h"
#include "AliTOFTriggerMask.h"
#include <TTimeStamp.h>
#include <TObjString.h>
#include <TList.h>
#include <TROOT.h>
#include <TSystem.h>
ClassImp(AliTRIPreprocessor)
const char* AliTRIPreprocessor::fgkDetectorsMapName[AliTRIPreprocessor::kNDetectorsMap] = {"SPD", "SDD", "SSD", "TPC", "TRD",
"TOF", "HMP", "PHS", "CPV", "PMD",
"MCH","MTR","FMD","T00","V00",
"ZDC","ACO","TRI","EMC","TST",
"", "", "", "", "",
"", "", "", "", "GRP",
"HLT"};
AliTRIPreprocessor::AliTRIPreprocessor(AliShuttleInterface* shuttle) :
AliPreprocessor("TRI", shuttle),
fShuttle(shuttle)
{
AddRunType("PHYSICS");
AddRunType("STANDALONE_PULSER");
}
AliTRIPreprocessor::~AliTRIPreprocessor()
{
}
void AliTRIPreprocessor::Initialize(Int_t run, UInt_t startTime,
UInt_t endTime)
{
AliPreprocessor::Initialize(run, startTime, endTime);
Log(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", run,
TTimeStamp(startTime).AsString(),
TTimeStamp(endTime).AsString()));
}
Bool_t AliTRIPreprocessor::ProcessDCS()
{
return kFALSE;
}
UInt_t AliTRIPreprocessor::Process(TMap* )
{
typedef Short_t (AliTRIPreprocessor::*AliProcessTriggerData)();
const AliProcessTriggerData processTriggerDataArray[AliTRIPreprocessor::kNDetectorsMap]= {
&AliTRIPreprocessor::ProcessSPDTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessTOFTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData,
&AliTRIPreprocessor::ProcessEmptyTriggerData};
TString triggerDetectorMask = (TString)GetTriggerDetectorMask();
Int_t result=0;
if (!triggerDetectorMask.IsNull()){
Int_t length = triggerDetectorMask.Length();
Log(Form("mask = %s", triggerDetectorMask.Data()));
for (Int_t i = 0; i<length; i++){
AliDebug(2,Form("%d-th bit = %c in index %d",i,triggerDetectorMask[length-1-i],length-1-i));
if (triggerDetectorMask[length-1-i] == '1'){
Log("****************************************");
Log(Form("Processing Trigger data for %s",fgkDetectorsMapName[i]));
Log("****************************************");
result+=(this->*processTriggerDataArray[i])();
}
}
}
return result;
}
Short_t AliTRIPreprocessor::ProcessSPDTriggerData()
{
Log("************** Processing SPD Trigger data... **************");
AliITSTriggerConditions* newCond = new AliITSTriggerConditions();
TString fxsID = "pit_conditions";
TList* list = GetFileSources(kDCS, fxsID.Data());
if (!list) {
AliError("FXS file not found.");
return 1;
}
UInt_t nFiles = 0;
while (list->At(nFiles)!=NULL) {
TObjString* fileNameEntry = (TObjString*) list->At(nFiles);
TString fileName = GetFile(kDCS, fxsID.Data(), fileNameEntry->GetString().Data());
if (fileName.IsNull()) {
Log(Form("GetFile failed to retrieve file %s.",fileNameEntry->GetString().Data()));
return 1;
}
if (nFiles==0) newCond->ReadFromTextFile(fileName.Data());
nFiles++;
}
if (nFiles!=1) {
AliWarning(Form("Found %d files with id %s (expected exactly 1).",nFiles,fxsID.Data()));
}
AliITSTriggerConditions* oldCond = NULL;
AliCDBEntry* pitCond = GetFromOCDB("SPD", "PITConditions");
if (pitCond) {
oldCond = (AliITSTriggerConditions*) pitCond->GetObject();
if (!oldCond) {
AliError("AliCDBEntry::GetObject() returned NULL.");
return 1;
}
}
else {
Log("Old conditions not found in database.");
}
Bool_t doUpdate = kTRUE;
if (oldCond) {
if (newCond->IsEqualTo(oldCond)) {
Log("Old conditions equal to new conditions. Do nothing.");
doUpdate = kFALSE;
}
}
if (doUpdate) {
AliCDBMetaData metaData;
metaData.SetResponsible("Henrik Tydesjo");
metaData.SetComment("Created by Trigger PreProcessor");
if (!Store("SPD", "PITConditions", newCond, &metaData, 0, kTRUE)) {
Log("Failed to store conditions data.");
return 1;
}
Log("Database updated.");
}
delete newCond;
Log("************************* ...done.*************************");
return 0;
}
Short_t AliTRIPreprocessor::ProcessTOFTriggerData()
{
Log("************** Processing TOF Trigger data... **************");
const char * nameFile = GetFile(kDCS,"TofFeeLightMap", "");
AliInfo(Form("toffeeLight file name = %s",nameFile));
if (nameFile == NULL) {
return 1;
}
AliTOFFEEReader feeReader;
feeReader.LoadFEElightConfig(nameFile);
feeReader.ParseFEElightConfig();
AliTOFTriggerMask triggerMask;
triggerMask.SetTriggerMaskArray(feeReader.GetTriggerMaskArray());
AliCDBMetaData metaData;
metaData.SetBeamPeriod(0);
metaData.SetResponsible("Roberto Preghenella");
metaData.SetComment("TOF trigger mask");
if (!Store("TOF", "TriggerMask", &triggerMask, &metaData, 0, kTRUE)) {
Log("error while storing TriggerMask object");
return 1;
}
Log("TriggerMask object successfully stored");
Log("************************* ...done.*************************");
return 0;
}
Short_t AliTRIPreprocessor::ProcessEmptyTriggerData()
{
Log("************** Trigger data Processing not yet implemented **************");
return 0;
}
AliTRIPreprocessor.cxx:10 AliTRIPreprocessor.cxx:11 AliTRIPreprocessor.cxx:12 AliTRIPreprocessor.cxx:13 AliTRIPreprocessor.cxx:14 AliTRIPreprocessor.cxx:15 AliTRIPreprocessor.cxx:16 AliTRIPreprocessor.cxx:17 AliTRIPreprocessor.cxx:18 AliTRIPreprocessor.cxx:19 AliTRIPreprocessor.cxx:20 AliTRIPreprocessor.cxx:21 AliTRIPreprocessor.cxx:22 AliTRIPreprocessor.cxx:23 AliTRIPreprocessor.cxx:24 AliTRIPreprocessor.cxx:25 AliTRIPreprocessor.cxx:26 AliTRIPreprocessor.cxx:27 AliTRIPreprocessor.cxx:28 AliTRIPreprocessor.cxx:29 AliTRIPreprocessor.cxx:30 AliTRIPreprocessor.cxx:31 AliTRIPreprocessor.cxx:32 AliTRIPreprocessor.cxx:33 AliTRIPreprocessor.cxx:34 AliTRIPreprocessor.cxx:35 AliTRIPreprocessor.cxx:36 AliTRIPreprocessor.cxx:37 AliTRIPreprocessor.cxx:38 AliTRIPreprocessor.cxx:39 AliTRIPreprocessor.cxx:40 AliTRIPreprocessor.cxx:41 AliTRIPreprocessor.cxx:42 AliTRIPreprocessor.cxx:43 AliTRIPreprocessor.cxx:44 AliTRIPreprocessor.cxx:45 AliTRIPreprocessor.cxx:46 AliTRIPreprocessor.cxx:47 AliTRIPreprocessor.cxx:48 AliTRIPreprocessor.cxx:49 AliTRIPreprocessor.cxx:50 AliTRIPreprocessor.cxx:51 AliTRIPreprocessor.cxx:52 AliTRIPreprocessor.cxx:53 AliTRIPreprocessor.cxx:54 AliTRIPreprocessor.cxx:55 AliTRIPreprocessor.cxx:56 AliTRIPreprocessor.cxx:57 AliTRIPreprocessor.cxx:58 AliTRIPreprocessor.cxx:59 AliTRIPreprocessor.cxx:60 AliTRIPreprocessor.cxx:61 AliTRIPreprocessor.cxx:62 AliTRIPreprocessor.cxx:63 AliTRIPreprocessor.cxx:64 AliTRIPreprocessor.cxx:65 AliTRIPreprocessor.cxx:66 AliTRIPreprocessor.cxx:67 AliTRIPreprocessor.cxx:68 AliTRIPreprocessor.cxx:69 AliTRIPreprocessor.cxx:70 AliTRIPreprocessor.cxx:71 AliTRIPreprocessor.cxx:72 AliTRIPreprocessor.cxx:73 AliTRIPreprocessor.cxx:74 AliTRIPreprocessor.cxx:75 AliTRIPreprocessor.cxx:76 AliTRIPreprocessor.cxx:77 AliTRIPreprocessor.cxx:78 AliTRIPreprocessor.cxx:79 AliTRIPreprocessor.cxx:80 AliTRIPreprocessor.cxx:81 AliTRIPreprocessor.cxx:82 AliTRIPreprocessor.cxx:83 AliTRIPreprocessor.cxx:84 AliTRIPreprocessor.cxx:85 AliTRIPreprocessor.cxx:86 AliTRIPreprocessor.cxx:87 AliTRIPreprocessor.cxx:88 AliTRIPreprocessor.cxx:89 AliTRIPreprocessor.cxx:90 AliTRIPreprocessor.cxx:91 AliTRIPreprocessor.cxx:92 AliTRIPreprocessor.cxx:93 AliTRIPreprocessor.cxx:94 AliTRIPreprocessor.cxx:95 AliTRIPreprocessor.cxx:96 AliTRIPreprocessor.cxx:97 AliTRIPreprocessor.cxx:98 AliTRIPreprocessor.cxx:99 AliTRIPreprocessor.cxx:100 AliTRIPreprocessor.cxx:101 AliTRIPreprocessor.cxx:102 AliTRIPreprocessor.cxx:103 AliTRIPreprocessor.cxx:104 AliTRIPreprocessor.cxx:105 AliTRIPreprocessor.cxx:106 AliTRIPreprocessor.cxx:107 AliTRIPreprocessor.cxx:108 AliTRIPreprocessor.cxx:109 AliTRIPreprocessor.cxx:110 AliTRIPreprocessor.cxx:111 AliTRIPreprocessor.cxx:112 AliTRIPreprocessor.cxx:113 AliTRIPreprocessor.cxx:114 AliTRIPreprocessor.cxx:115 AliTRIPreprocessor.cxx:116 AliTRIPreprocessor.cxx:117 AliTRIPreprocessor.cxx:118 AliTRIPreprocessor.cxx:119 AliTRIPreprocessor.cxx:120 AliTRIPreprocessor.cxx:121 AliTRIPreprocessor.cxx:122 AliTRIPreprocessor.cxx:123 AliTRIPreprocessor.cxx:124 AliTRIPreprocessor.cxx:125 AliTRIPreprocessor.cxx:126 AliTRIPreprocessor.cxx:127 AliTRIPreprocessor.cxx:128 AliTRIPreprocessor.cxx:129 AliTRIPreprocessor.cxx:130 AliTRIPreprocessor.cxx:131 AliTRIPreprocessor.cxx:132 AliTRIPreprocessor.cxx:133 AliTRIPreprocessor.cxx:134 AliTRIPreprocessor.cxx:135 AliTRIPreprocessor.cxx:136 AliTRIPreprocessor.cxx:137 AliTRIPreprocessor.cxx:138 AliTRIPreprocessor.cxx:139 AliTRIPreprocessor.cxx:140 AliTRIPreprocessor.cxx:141 AliTRIPreprocessor.cxx:142 AliTRIPreprocessor.cxx:143 AliTRIPreprocessor.cxx:144 AliTRIPreprocessor.cxx:145 AliTRIPreprocessor.cxx:146 AliTRIPreprocessor.cxx:147 AliTRIPreprocessor.cxx:148 AliTRIPreprocessor.cxx:149 AliTRIPreprocessor.cxx:150 AliTRIPreprocessor.cxx:151 AliTRIPreprocessor.cxx:152 AliTRIPreprocessor.cxx:153 AliTRIPreprocessor.cxx:154 AliTRIPreprocessor.cxx:155 AliTRIPreprocessor.cxx:156 AliTRIPreprocessor.cxx:157 AliTRIPreprocessor.cxx:158 AliTRIPreprocessor.cxx:159 AliTRIPreprocessor.cxx:160 AliTRIPreprocessor.cxx:161 AliTRIPreprocessor.cxx:162 AliTRIPreprocessor.cxx:163 AliTRIPreprocessor.cxx:164 AliTRIPreprocessor.cxx:165 AliTRIPreprocessor.cxx:166 AliTRIPreprocessor.cxx:167 AliTRIPreprocessor.cxx:168 AliTRIPreprocessor.cxx:169 AliTRIPreprocessor.cxx:170 AliTRIPreprocessor.cxx:171 AliTRIPreprocessor.cxx:172 AliTRIPreprocessor.cxx:173 AliTRIPreprocessor.cxx:174 AliTRIPreprocessor.cxx:175 AliTRIPreprocessor.cxx:176 AliTRIPreprocessor.cxx:177 AliTRIPreprocessor.cxx:178 AliTRIPreprocessor.cxx:179 AliTRIPreprocessor.cxx:180 AliTRIPreprocessor.cxx:181 AliTRIPreprocessor.cxx:182 AliTRIPreprocessor.cxx:183 AliTRIPreprocessor.cxx:184 AliTRIPreprocessor.cxx:185 AliTRIPreprocessor.cxx:186 AliTRIPreprocessor.cxx:187 AliTRIPreprocessor.cxx:188 AliTRIPreprocessor.cxx:189 AliTRIPreprocessor.cxx:190 AliTRIPreprocessor.cxx:191 AliTRIPreprocessor.cxx:192 AliTRIPreprocessor.cxx:193 AliTRIPreprocessor.cxx:194 AliTRIPreprocessor.cxx:195 AliTRIPreprocessor.cxx:196 AliTRIPreprocessor.cxx:197 AliTRIPreprocessor.cxx:198 AliTRIPreprocessor.cxx:199 AliTRIPreprocessor.cxx:200 AliTRIPreprocessor.cxx:201 AliTRIPreprocessor.cxx:202 AliTRIPreprocessor.cxx:203 AliTRIPreprocessor.cxx:204 AliTRIPreprocessor.cxx:205 AliTRIPreprocessor.cxx:206 AliTRIPreprocessor.cxx:207 AliTRIPreprocessor.cxx:208 AliTRIPreprocessor.cxx:209 AliTRIPreprocessor.cxx:210 AliTRIPreprocessor.cxx:211 AliTRIPreprocessor.cxx:212 AliTRIPreprocessor.cxx:213 AliTRIPreprocessor.cxx:214 AliTRIPreprocessor.cxx:215 AliTRIPreprocessor.cxx:216 AliTRIPreprocessor.cxx:217 AliTRIPreprocessor.cxx:218 AliTRIPreprocessor.cxx:219 AliTRIPreprocessor.cxx:220 AliTRIPreprocessor.cxx:221 AliTRIPreprocessor.cxx:222 AliTRIPreprocessor.cxx:223 AliTRIPreprocessor.cxx:224 AliTRIPreprocessor.cxx:225 AliTRIPreprocessor.cxx:226 AliTRIPreprocessor.cxx:227 AliTRIPreprocessor.cxx:228 AliTRIPreprocessor.cxx:229 AliTRIPreprocessor.cxx:230 AliTRIPreprocessor.cxx:231 AliTRIPreprocessor.cxx:232 AliTRIPreprocessor.cxx:233 AliTRIPreprocessor.cxx:234 AliTRIPreprocessor.cxx:235 AliTRIPreprocessor.cxx:236 AliTRIPreprocessor.cxx:237 AliTRIPreprocessor.cxx:238 AliTRIPreprocessor.cxx:239 AliTRIPreprocessor.cxx:240 AliTRIPreprocessor.cxx:241 AliTRIPreprocessor.cxx:242 AliTRIPreprocessor.cxx:243 AliTRIPreprocessor.cxx:244 AliTRIPreprocessor.cxx:245 AliTRIPreprocessor.cxx:246 AliTRIPreprocessor.cxx:247 AliTRIPreprocessor.cxx:248 AliTRIPreprocessor.cxx:249 AliTRIPreprocessor.cxx:250 AliTRIPreprocessor.cxx:251 AliTRIPreprocessor.cxx:252 AliTRIPreprocessor.cxx:253 AliTRIPreprocessor.cxx:254 AliTRIPreprocessor.cxx:255 AliTRIPreprocessor.cxx:256 AliTRIPreprocessor.cxx:257 AliTRIPreprocessor.cxx:258 AliTRIPreprocessor.cxx:259 AliTRIPreprocessor.cxx:260 AliTRIPreprocessor.cxx:261 AliTRIPreprocessor.cxx:262 AliTRIPreprocessor.cxx:263 AliTRIPreprocessor.cxx:264 AliTRIPreprocessor.cxx:265 AliTRIPreprocessor.cxx:266 AliTRIPreprocessor.cxx:267 AliTRIPreprocessor.cxx:268 AliTRIPreprocessor.cxx:269 AliTRIPreprocessor.cxx:270 AliTRIPreprocessor.cxx:271 AliTRIPreprocessor.cxx:272 AliTRIPreprocessor.cxx:273 AliTRIPreprocessor.cxx:274 AliTRIPreprocessor.cxx:275 AliTRIPreprocessor.cxx:276 AliTRIPreprocessor.cxx:277 AliTRIPreprocessor.cxx:278 AliTRIPreprocessor.cxx:279 AliTRIPreprocessor.cxx:280 AliTRIPreprocessor.cxx:281 AliTRIPreprocessor.cxx:282 AliTRIPreprocessor.cxx:283 AliTRIPreprocessor.cxx:284 AliTRIPreprocessor.cxx:285 AliTRIPreprocessor.cxx:286 AliTRIPreprocessor.cxx:287 AliTRIPreprocessor.cxx:288 AliTRIPreprocessor.cxx:289