CMake: Retrieve Git information
[u/mrichter/AliRoot.git] / MUON / macros / UpdateCDBCTPConfig.C
CommitLineData
cbb5526b 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/* $Id$ */
17
18/// \ingroup macros
19/// \file UpdateCDBCTPConfig.C
20/// \brief The macro writes a new GRP/CTP/Config trigger configuration file
21/// from the GRP/CTP/MUON.cfg trigger descriptor, corresponding to a
22/// run where only MUON is used as a trigger detector.
23///
24/// The macro writes a new GRP/CTP/Config trigger configuration file
25/// from the GRP/CTP/MUON.cfg trigger descriptor, corresponding to a
26/// run where only MUON is used as a trigger detector. The
27/// compatibility is check against the Config.C used in the simulation
28/// (which means that the MUON detector must be there). When "check"
29/// is "true", the macro only shows the last CTP configuration stored in
30/// the GRP.
31/// This is necessary because at the first step of the simulation (digits)
32/// the trigger configuration is guessed from the detectors defined in the
33/// Config.C, while the reconstruction is performed in a second separate
34/// step, having no more knowledge of the Config.C file.
35/// This has to be done before starting the simulations, only once after
36/// the installation of AliRoot:
37///
38/// <pre>
6e54bdcc 39///.L $ALICE_ROOT/MUON/macros/UpdateCDBCTPConfig.C+
cbb5526b 40/// UpdateCDBCTPConfig(1); // just checking
41/// UpdateCDBCTPConfig(); // update the GRP/CDB entry
42/// </pre>
43///
44/// AliRoot comes with a default entry corresponding to a pp trigger. In
45/// this case, at the reconstruction phase error messages will appear (without
46/// breaking the reconstruction): \n
47///
48/// E-AliCentralTrigger::CheckTriggeredDetectors: Wrong cluster mask from trigger
49/// classes (7ffff), expecting (20c00)! Loaded trigger configuration is possibly wrong!
50///
51/// \author B. Vulpescu, LPC Clermont-Ferrand
52
53#if !defined(__CINT__) || defined(__MAKECINT__)
54#include "ARVersion.h"
55#include "AliCDBManager.h"
56#include "AliCDBStorage.h"
57#include "AliCDBEntry.h"
58#include "AliCDBId.h"
59#include "AliCDBMetaData.h"
60#include "AliTriggerConfiguration.h"
a1990550 61#include "AliTriggerUtils.h"
04144b9a 62#include "AliSimulation.h"
cbb5526b 63#include <TROOT.h>
64#include <TString.h>
65#include <TSystem.h>
66#endif
67
68void UpdateCDBCTPConfig(Bool_t check = false) {
69
04144b9a 70 // AliSimulation object must exist, as it is used via AliMC
a1990550 71 // which is used in AliTriggerUtils::CheckConfiguration()
04144b9a 72 AliSimulation sim;
73
cbb5526b 74 AliCDBManager* cdb = AliCDBManager::Instance();
162637e4 75 cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
cbb5526b 76 cdb->SetRun(0);
77
78 if (check) {
79 // current entry in GRP/CTP/Config trigger configuration
80 AliCDBEntry *entry;
81 entry = cdb->Get("GRP/CTP/Config");
82 AliCDBMetaData *md = entry->GetMetaData();
83 Printf("AliRoot version: %s",md->GetAliRootVersion());
84 Printf("Comment: %s ",md->GetComment());
85 Printf("Responsible: %s ",md->GetResponsible());
86 return;
87 }
88
89 const Char_t* alice = gSystem->Getenv("ALICE_ROOT");
90
91 // construct the CTP configuration starting from GRP/CTP/<CTPcfg>.cfg file
92
93 // Config.C detector configuration
6e54bdcc 94 TString cfgFile(Form("%s/MUON/macros/Config.C",alice));
cbb5526b 95
96 // MUON.cfg trigger configuration
97 TString cfgCTP(Form("%s/GRP/CTP/MUON.cfg",alice));
98
99 AliTriggerConfiguration *trconfig = AliTriggerConfiguration::LoadConfiguration(cfgCTP);
100 if (!trconfig) {
101 Printf("Invalid cfg file! Exiting...");
102 return;
103 }
104
105 // check if Config.C is compatible with the trigger configuration requested
a1990550 106 AliTriggerUtils tru;
107 if (!tru.CheckConfiguration(cfgFile,trconfig)) {
cbb5526b 108 Printf("CTP configuration is incompatible with the specified Config.C and AliRoot version! Exiting...");
109 return;
110 }
111
112 // put the new trigger configuration "trconfig" in the GRP/CTP/Config
113
114 AliCDBId id("GRP/CTP/Config",0,AliCDBRunRange::Infinity());
115 AliCDBMetaData *md= new AliCDBMetaData();
116
117 // ROOT and AliRoot versions
118 const char* rootv = gROOT->GetVersion();
5420ed56 119 TString av(ALIROOT_VERSION);
0492edf5 120 TString revnum(ALIROOT_REVISION);
cbb5526b 121
1d2b6a8b 122 Printf("root version: %s. AliRoot %s, revision number %s",rootv,av.Data(),revnum.Data());
cbb5526b 123
124 md->SetAliRootVersion(av.Data());
1d2b6a8b 125 md->SetComment(Form("Default CTP configuration for MUON mode produced with root version %s and AliRoot version %s revision %s ",rootv,av.Data(),revnum.Data()));
cbb5526b 126
162637e4 127 AliCDBStorage* storage = cdb->GetStorage("local://$ALICE_ROOT/OCDB");
cbb5526b 128 storage->Put(trconfig,id,md);
129
130}