]>
Commit | Line | Data |
---|---|---|
ccc28861 | 1 | /* |
2 | $Id$ | |
3 | */ | |
4 | ||
5 | // This class runs the test TOF preprocessor | |
6 | // It uses AliTestShuttle to simulate a full Shuttle process | |
7 | ||
8 | // The input data is created in the functions | |
9 | // CreateDCSAliasMap() creates input that would in the same way come from DCS | |
10 | // ReadDCSAliasMap() reads from a file | |
11 | // CreateInputFilesMap() creates a list of local files, that can be accessed by the shuttle | |
12 | ||
27a53fea | 13 | extern TBenchmark *gBenchmark; |
7fffa85b | 14 | void TOFPreprocessor(Char_t * RunType="PHYSICS") |
ccc28861 | 15 | { |
db83b789 | 16 | gSystem->Load("$ALICE_ROOT/SHUTTLE/TestShuttle/libTestShuttle.so"); |
ccc28861 | 17 | |
17149e6b | 18 | AliLog::SetClassDebugLevel("AliTOFPreprocessor",2); |
ccc28861 | 19 | // initialize location of CDB |
162637e4 | 20 | AliTestShuttle::SetMainCDB("local://$ALICE_ROOT/OCDB/SHUTTLE/TestShuttle/TestCDB"); |
21 | AliTestShuttle::SetMainRefStorage("local://$ALICE_ROOT/OCDB/SHUTTLE/TestShuttle/TestReference"); | |
58f7f59a | 22 | |
ccc28861 | 23 | // create AliTestShuttle instance |
69355034 | 24 | Int_t nrun = 7; |
ff326f84 | 25 | AliTestShuttle* shuttle = new AliTestShuttle(nrun, 30, 980); |
7fffa85b | 26 | //setting run type to physiscs |
27 | shuttle->SetInputRunType(RunType); | |
ff326f84 | 28 | shuttle->SetTimeCreated(20); |
29 | shuttle->SetDCSQueryOffset(20); | |
ccc28861 | 30 | |
31 | // Generation of "fake" input DCS data | |
27a53fea | 32 | TMap* dcsAliasMap = CreateDCSAliasMap(); |
ccc28861 | 33 | |
34 | // now give the alias map to the shuttle | |
27a53fea | 35 | shuttle->SetDCSInput(dcsAliasMap); |
ccc28861 | 36 | |
37 | // processing files. for the time being, the files are local. | |
5abdf772 | 38 | shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "DELAYS", "MON", "$ALICE_ROOT/TOF/ShuttleInput/Total.root"); |
39 | shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "RUNLevel", "MON", "$ALICE_ROOT/TOF/ShuttleInput/Partial.root"); | |
fceb731d | 40 | shuttle->AddInputFile(AliTestShuttle::kDCS, "TOF", "TofFeeLightMap", "", "$ALICE_ROOT/TOF/ShuttleInput/TOFFEElight.20090616.102605.8000"); |
69355034 | 41 | shuttle->AddInputFile(AliTestShuttle::kDCS, "TOF", "TofFeeMap", "", "$ALICE_ROOT/TOF/ShuttleInput/TOFFEE.20091217.194708.105517"); |
013ac2dd | 42 | |
43 | TString filename; | |
44 | TString LDCname; | |
45 | //char filename[100]; | |
46 | //char LDCname[5]; | |
7fffa85b | 47 | |
4541173c | 48 | for (Int_t iLDC=0;iLDC<2;iLDC++){ |
013ac2dd | 49 | filename.Form("$ALICE_ROOT/TOF/ShuttleInput/TOFoutPulserLDC_%02i.root",iLDC*2); |
50 | LDCname.Form("LDC%i",iLDC*2); | |
4541173c | 51 | shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "PULSER", LDCname, filename); |
013ac2dd | 52 | filename.Form("$ALICE_ROOT/TOF/ShuttleInput/TOFoutNoiseLDC_%02i.root",iLDC*2); |
53 | LDCname.Form("LDC%i",iLDC*2); | |
4541173c | 54 | shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "NOISE", LDCname, filename); |
55 | } | |
013ac2dd | 56 | |
ccc28861 | 57 | |
58 | // instantiation of the preprocessor | |
124a2863 | 59 | AliPreprocessor* pp = new AliTOFPreprocessor(shuttle); |
ccc28861 | 60 | |
61 | // preprocessing | |
27a53fea | 62 | gBenchmark->Start("process"); |
ccc28861 | 63 | shuttle->Process(); |
27a53fea | 64 | gBenchmark->Stop("process"); |
65 | gBenchmark->Print("process"); | |
ccc28861 | 66 | |
67 | // checking the file which should have been created | |
17149e6b | 68 | AliCDBEntry* chkEntry = AliCDBManager::Instance()->GetStorage(AliShuttleInterface::GetMainCDB())->Get("TOF/Calib/ParOnlineDelay", nrun); |
27a53fea | 69 | if (!chkEntry) |
ccc28861 | 70 | { |
71 | printf("The file is not there. Something went wrong.\n"); | |
72 | return; | |
73 | } | |
74 | ||
27a53fea | 75 | AliTOFDataDCS* output = dynamic_cast<AliTOFDataDCS*> (chkEntry->GetObject()); |
ccc28861 | 76 | // If everything went fine, draw the result |
77 | if (output) | |
38e3bbf1 | 78 | printf("Output found.\n"); |
79 | // output->Draw(); | |
ccc28861 | 80 | |
81 | } | |
82 | ||
83 | TMap* CreateDCSAliasMap() | |
84 | { | |
85 | // Creates a DCS structure | |
86 | // The structure is the following: | |
27a53fea | 87 | // TMap (key --> value) |
88 | // <DCSAlias> --> <valueList> | |
89 | // <DCSAlias> is a string | |
90 | // <valueList> is a TObjArray of AliDCSValue | |
91 | // An AliDCSValue consists of timestamp and a value in form of a AliSimpleValue | |
ccc28861 | 92 | |
27a53fea | 93 | // In this example 6 aliases exists: DCSAlias1 ... DCSAlias6 |
94 | // Each contains 1000 values randomly generated by TRandom::Gaus + 5*nAlias | |
ccc28861 | 95 | |
96 | TMap* aliasMap = new TMap; | |
97 | aliasMap->SetOwner(1); | |
98 | ||
99 | TRandom random; | |
100 | TDatime *datime = new TDatime(); | |
101 | Int_t time = datime->GetTime(); | |
102 | Int_t date = datime->GetDate(); | |
103 | Int_t pid = gSystem->GetPid(); | |
104 | delete datime; | |
105 | Int_t iseed = TMath::Abs(10000 * pid + time - date); | |
106 | ||
27a53fea | 107 | //Float_t thrHVv=7.75, thrHVc=3, thrLVv=2.75, thrLVc=2.5, |
108 | //thrFEEthr=1.5, thrFEEt=10, thrTemp=35, thrPress=1000; | |
109 | //Float_t tentHVv=6.75, tentHVc=2, tentLVv=1.75, tentLVc=1.5, | |
110 | // tentFEEthr=0.5, te result=0; | |
111 | //ntFEEt=20, tentTemp=25, tentPress=900; | |
112 | //Float_t sigmaHVv=1, sigmaHVc=0.25, sigmaLVv=0.25, sigmaLVc=0.25, | |
113 | // sigmaFEEthr=0.05, sigmaFEEt=5, sigmaTemp=1, sigmaPress=10; | |
114 | ||
d202b31a | 115 | Float_t tentHVv=6500, tentHVi=80; |
116 | Float_t sigmaHVv=10, sigmaHVi=10; | |
ccc28861 | 117 | |
118 | Float_t tent=0, sigma=0, thr=0; | |
d202b31a | 119 | // to have all the aliases, decomment the following line: |
120 | Int_t NAliases=360, NHV=90; | |
7fffa85b | 121 | |
122 | // if not all the aliases are there, use this: | |
d202b31a | 123 | //Int_t NAliases=120, NHV=90; |
ccc28861 | 124 | |
125 | for(int nAlias=0;nAlias<NAliases;nAlias++) { | |
126 | ||
127 | TObjArray* valueSet = new TObjArray; | |
128 | valueSet->SetOwner(1); | |
129 | ||
124a2863 | 130 | TString sindex; |
ccc28861 | 131 | TString aliasName; |
132 | if (nAlias<NHV){ | |
124a2863 | 133 | aliasName = "tof_hv_vp_"; |
134 | sindex.Form("%02i",nAlias); | |
135 | aliasName += sindex; | |
136 | //aliasName += nAlias; | |
ccc28861 | 137 | tent=tentHVv; |
138 | sigma=sigmaHVv; | |
139 | // thr=thrHVv; | |
140 | } | |
141 | else if (nAlias<NHV*2){ | |
124a2863 | 142 | // aliasName = "HVvneg"; |
143 | //aliasName += nAlias-NHV; | |
144 | aliasName = "tof_hv_vn_"; | |
145 | sindex.Form("%02i",nAlias-NHV); | |
146 | aliasName += sindex; | |
ccc28861 | 147 | tent=-tentHVv; |
148 | sigma=-sigmaHVv; | |
149 | //thr=-thrHVv; | |
150 | } | |
151 | else if (nAlias<NHV*3){ | |
124a2863 | 152 | // aliasName = "HVcpos"; |
153 | //aliasName += nAlias-2*NHV; | |
154 | aliasName = "tof_hv_ip_"; | |
155 | sindex.Form("%02i",nAlias-2*NHV); | |
156 | aliasName += sindex; | |
157 | tent=tentHVi; | |
158 | sigma=sigmaHVi; | |
ccc28861 | 159 | //thr=thrHVc; |
160 | } | |
161 | else if (nAlias<NHV*4){ | |
124a2863 | 162 | // aliasName = "HVcneg"; |
163 | //aliasName += nAlias-3*NHV; | |
164 | aliasName = "tof_hv_in_"; | |
165 | sindex.Form("%02i",nAlias-3*NHV); | |
166 | aliasName += sindex; | |
167 | tent=-tentHVi; | |
168 | sigma=-sigmaHVi; | |
ccc28861 | 169 | //thr=-thrHVc; |
170 | } | |
ccc28861 | 171 | // gauss generation of values |
172 | for (int timeStamp=0;timeStamp<1000;timeStamp+=10){ | |
db83b789 | 173 | //for (int timeStamp=0;timeStamp<1;timeStamp++){ |
ccc28861 | 174 | Float_t gaussvalue = (Float_t) (random.Gaus(tent,sigma)); |
175 | if (TMath::Abs(gaussvalue-tent)>sigma){ | |
176 | AliDCSValue* dcsVal = new AliDCSValue(gaussvalue, timeStamp); | |
177 | valueSet->Add(dcsVal); | |
178 | } | |
179 | } | |
180 | ||
181 | aliasMap->Add(new TObjString(aliasName), valueSet); | |
182 | } | |
183 | ||
184 | return aliasMap; | |
185 | } | |
186 | ||
187 | TMap* ReadDCSAliasMap() | |
188 | { | |
189 | // Open a file that contains DCS input data | |
190 | // The CDB framework is used to open the file, this means the file is located | |
191 | // in $ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB/<detector>/DCS/Data | |
192 | // The file contains an AliCDBEntry that contains a TMap with the DCS structure. | |
193 | // An explanation of the structure can be found in CreateDCSAliasMap() | |
194 | ||
195 | AliCDBEntry *entry = AliCDBManager::Instance()->Get("TOF/DCS/Data", 0); | |
196 | return dynamic_cast<TMap*> (entry->GetObject()); | |
197 | } | |
198 | ||
199 | void WriteDCSAliasMap() | |
200 | { | |
201 | // This writes the output from CreateDCSAliasMap to a CDB file | |
202 | ||
203 | TMap* dcsAliasMap = CreateDCSAliasMap(); | |
204 | ||
205 | AliCDBMetaData metaData; | |
206 | metaData.SetBeamPeriod(0); | |
207 | metaData.SetResponsible("Chiara"); | |
208 | metaData.SetComment("Test object for TOFPreprocessor.C"); | |
209 | ||
210 | AliCDBId id("TOF/DCS/Data", 0, 0); | |
211 | ||
212 | // initialize location of CDB | |
162637e4 | 213 | AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB/SHUTTLE/TestShuttle/TestCDB"); |
ccc28861 | 214 | |
215 | AliCDBManager::Instance()->Put(dcsAliasMap, id, &metaData); | |
216 | } |