TRD module
[u/mrichter/AliRoot.git] / TRD / TRDbase / AliTRDCreateDummyCDB_DP.C
1 #if !defined( __CINT__) || defined(__MAKECINT__)
2
3 #include <iostream>
4
5 #include <AliCDBManager.h>
6 #include <AliCDBStorage.h>
7 #include <AliCDBEntry.h>
8 #include <AliCDBMetaData.h>
9
10 #include "AliTRDgeometry.h"
11
12 #include "AliTRDCalDCS.h"
13 #include "AliTRDCalDCSFEE.h"
14
15 #endif
16
17 // ===================================================
18 // Modified version of the macro AliTRDCreateDummyCDB 
19 // to create the default CDB object for the DCS
20 // data points
21 // Modifications done by Frederick Kramer 2010-05-11
22 // ===================================================
23
24
25
26 // Run numbers for the dummy file
27 const Int_t    gkDummyRunBeg = 0;
28 const Int_t    gkDummyRunEnd = 999999999;
29 AliCDBStorage *gStorLoc      = 0;
30
31
32 //_____________________________________________________________________________
33 TMap* CreateDCSAliasMap(Int_t entries) {
34   // Creates a DCS structure
35   // The structure is the following:
36   //   TMap (key --> value)
37   //     <DCSAlias> --> <valueList>
38   //     <DCSAlias> is a string
39   //     <valueList> is a TObjArray of AliDCSValue
40   //     An AliDCSValue consists of timestamp and a value in form of a AliSimpleValue
41
42   // Each contains 1000 values randomly generated by TRandom::Gaus + 5*nAlias
43
44   TMap* aliasMap = new TMap;
45   aliasMap->SetOwner(1);
46
47   TRandom random;
48
49   for(int nAlias=0;nAlias<entries;nAlias++)
50   {
51     TObjArray* valueSet = new TObjArray;
52     valueSet->SetOwner(1);
53
54     TString aliasName="DCSAlias";
55     aliasName += nAlias;
56     //printf("\n\n alias: %s\n\n",aliasName.Data());
57
58     for (int timeStamp=0;timeStamp<1000;timeStamp+=10)
59     {
60       AliDCSValue* dcsVal = new AliDCSValue((Float_t) (random.Gaus()+5*nAlias), timeStamp);
61       //printf("%s\n",dcsVal->ToString().Data());
62       valueSet->Add(dcsVal);
63     }
64     aliasMap->Add(new TObjString(aliasName), valueSet);
65   }
66
67   return aliasMap;
68 }
69
70
71 //_____________________________________________________________________________
72 AliCDBMetaData *CreateMetaObject(const char *objectClassName)
73 {
74
75   AliCDBMetaData *md1= new AliCDBMetaData(); 
76   md1->SetObjectClassName(objectClassName);
77   md1->SetResponsible("Frederick Kramer");
78   md1->SetBeamPeriod(1);
79   md1->SetAliRootVersion("05-26-00b"); //root version
80   md1->SetComment("Ideal DCS DP CDB object");
81   
82   return md1;
83
84 }
85
86 //_____________________________________________________________________________
87 void StoreObject(const char* cdbPath, AliTRDSensorArray* object, AliCDBMetaData* metaData)
88 {
89
90   AliCDBId id1(cdbPath,gkDummyRunBeg,gkDummyRunEnd); 
91   gStorLoc->Put(object,id1,metaData); 
92
93 }
94     
95
96 //_____________________________________________________________________________
97 void AliTRDCreateDummyCDB_DP()
98 {
99
100   cout << endl 
101        << "TRD :: Creating dummy CDB for the runs " 
102        << gkDummyRunBeg
103        << " -- " 
104        << gkDummyRunEnd
105        << endl;
106   
107   AliCDBManager *man = AliCDBManager::Instance();
108   gStorLoc = man->GetStorage("local://$ALICE_ROOT/OCDB");
109   if (!gStorLoc) {
110     return;
111   }
112
113   AliCDBMetaData *metaData = 0;
114   TObjArray* list = AliTRDSensorArray::GetList();
115
116   if (list == 0x0) {
117     printf("Error during AliTRDSensorArray::GetList\n");
118     printf("DCS will not be processing\n");
119   }
120
121   Int_t nEntries = list->GetEntries();
122   printf("%d alias loaded\n", nEntries);
123
124   Bool_t* results = new Bool_t [nEntries];
125   Int_t*  nGraph  = new Int_t [nEntries];
126   TMap* dcsAliasMap = CreateDCSAliasMap(nEntries);
127
128   for (Int_t iAlias = 0; iAlias < nEntries; iAlias++) {
129
130     AliTRDSensorArray * oneTRDDCS = (AliTRDSensorArray *)list->At(iAlias);
131
132     oneTRDDCS->SetStartTime(TTimeStamp (1000000000));
133     oneTRDDCS->SetEndTime(TTimeStamp (2000000000));
134     printf("Processing DCS : \"%s\"\n", oneTRDDCS->GetStoreName().Data());
135
136     TMap * map;
137     map = oneTRDDCS->ExtractDCS(dcsAliasMap);
138     nGraph[iAlias] = map->GetEntries();
139     oneTRDDCS->SetGraph(map);
140
141     char ocdbpath[256];
142     sprintf(ocdbpath, "TRD/Calib/%s", oneTRDDCS->GetStoreName().Data());
143     metaData = CreateMetaObject(oneTRDDCS->GetStoreName().Data());
144
145     StoreObject(ocdbpath, oneTRDDCS, metaData);
146   }
147   
148 }
149