]>
Commit | Line | Data |
---|---|---|
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> | |
39 | ///.L $ALICE_ROOT/MUON/UpdateCDBCTPConfig.C+ | |
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 | ||
68 | void 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 | |
94 | TString cfgFile(Form("%s/MUON/Config.C",alice)); | |
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(); | |
0492edf5 A |
119 | TString av(ALIROOT_BRANCH); |
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 | } |