]> git.uio.no Git - u/mrichter/AliRoot.git/blob - macros/DBAccessTutorial.C
Removing obsolete calls in MUON initialization
[u/mrichter/AliRoot.git] / macros / DBAccessTutorial.C
1 void DBAccessTutorial(){
2
3
4 /***************************************************************************************************************
5  Prelude(0):    if it doesn't exist, create DB directory: $ALICE_ROOT/DB
6  ***************************************************************************************************************/
7 TString DBFolder="$ALICE_ROOT/DBTutorial";
8 gSystem->ExpandPathName(DBFolder);
9
10 if(!gSystem->OpenDirectory(DBFolder)){
11         printf("Warning: folder DBTutorial does not exist, I will create it!");
12         TString command = "mkdir "+ DBFolder;
13         gSystem->Exec(command.Data());
14 }
15
16 /***************************************************************************************************************
17  Prelude(1):    create a DB object. We'll take AliZDCCalibData 
18                 (container class for ZDC Calibration data) as an example
19  ***************************************************************************************************************/
20  
21 AliZDCCalibData *calibda=new AliZDCCalibData("ZDC");
22
23 // Fill array of ZDC energy calibration factors (4 float's) with some numbers
24 Float_t EnFactorsArray[4]={20.,25.,200.,10.};
25 calibda->SetEnCalib(EnFactorsArray);
26
27 printf("\nI am in Prelude(1). ZDC Energy calibration factors: \n");  
28 printf("PM0=%f; PM1=%f; PM2=%f; PM3=%f \n",
29    calibda->GetEnCalib(0),  calibda->GetEnCalib(1),  calibda->GetEnCalib(2),  calibda->GetEnCalib(3) );  
30
31 /***************************************************************************************************************
32  Part 1:        Store the calibration object in the database, using 
33                 the "Organized" storage system
34                 (i.e. a well defined directory structure, defined by the 
35                 object's metadata and set in the DBFodler above specified)
36  ***************************************************************************************************************/
37
38 // a. Define the object's metadata (set of information which describes the object)
39 // AliCDBMetaData(char* name, int firstRun, int lastRun,int Period,char* ObjectFormat, char* ResponsibleName, char* extraInfo)
40 //
41 // name: Object's name ("Detector/DBType/DetSpecType")
42 // firstRun: first run for which the object is valid
43 // lastRun:  last run for which the object is valid
44 // period: beam period (to be better specified in future)
45 // objectFormat: a string which describes the object's format
46 // ResponsibleName: name of the person who created and stored the object
47 // extraInfo: anything else you may want to know
48
49 AliCDBMetaData md("ZDC/Calib/GainFactors",1,10,1,"AliZDCCalibData: Pedestals (47 floats), En. calib factors (4 floats)","A. Colla", "Tutorial");
50
51 // b. Create the specific AliCDBStorage instance (AliCDBLocal in this case)
52
53 AliCDBLocal *loc = new AliCDBLocal(DBFolder.Data());
54
55 // c. Put the object in the database. Use Put method: AliCDBStorage::Put(TObject object, AliCDBMetaData& metaData)
56 // 
57 // the object will be stored in the file DBFolder/ZDC/Calib/GainFactors/Run1-10_v0.root
58 // Note that the version is automatically determined.
59
60 AliCDBStorage::Instance()->Put(calibda, md); // we could also type: loc->Put(calibda, md)
61
62 // delete the AliCDBStorage instance and the object (optional)
63 AliCDBStorage::Instance()->Delete();
64
65
66 /***************************************************************************************************************
67  Part 2:        Now we want to retrieve the object valid, say, for run 5 from the database folder. 
68                 We will dump it in a dump file called "dummyDBTutorail.root", for later usage. 
69  ***************************************************************************************************************/
70
71 // a. Create the specific AliCDBStorage instance (AliCDBLocal in this case)
72 AliCDBLocal *loc = new AliCDBLocal(DBFolder.Data());
73
74 // b. Prepare AliCDBStorage to save the object in the dump file
75 AliCDBStorage::Instance()->DumpToFile("dummyDBTutorial.root");
76
77 // c. Get the object! 
78 // TObject *AliCDBStorage::Get(char* name, int runNumber)
79 // if no selection criteria are specified, the highest version found is retrieved.
80
81 AliZDCCalibData *calibda2 = (AliZDCCalibData*) AliCDBStorage::Instance()->Get("ZDC/Calib/GainFactors",5);
82
83 printf("\nI am in Part2. ZDC Energy calibration factors: \n");  
84 printf("PM0=%f; PM1=%f; PM2=%f; PM3=%f \n",
85    calibda2->GetEnCalib(0),  calibda2->GetEnCalib(1),  calibda2->GetEnCalib(2),  calibda2->GetEnCalib(3) );  
86
87 AliCDBStorage::Instance()->Delete();
88
89
90 /***************************************************************************************************************
91  Part 3:        Now we will retrieve the object from the dump file. 
92                 We will tune the energy calibration factors and we suppose that the new object is valid from run 1 to run 15.
93                 Finally we will store the object in DBFolder again with the new run range specified in the object's metadata.  
94  ***************************************************************************************************************/
95
96 // a. Create the specific AliCDBStorage instance (AliCDBDump in this case)
97 AliCDBDump *df = new AliCDBDump("dummyDBTutorial.root");
98
99 // b. Get the object.
100 AliZDCCalibData *calibda3 = (AliZDCCalibData*) AliCDBStorage::Instance()->Get("ZDC/Calib/GainFactors",5);
101
102 //AliZDCCalibData calibda3copy=*calibda3;
103
104 // c. Tune the energy calibration factors.
105 calibda3->SetEnCalib(21.5, 0); calibda3->SetEnCalib(26.3, 1); 
106 calibda3->SetEnCalib(201., 2); calibda3->SetEnCalib(9.45, 3);
107
108 printf("\nI am in Part3. New ZDC Energy calibration factors: \n");  
109 printf("PM0=%f; PM1=%f; PM2=%f; PM3=%f \n",
110    calibda3->GetEnCalib(0),  calibda3->GetEnCalib(1),  calibda3->GetEnCalib(2),  calibda3->GetEnCalib(3) );  
111
112 // d. Get the object's metadata, set the new run range
113 AliCDBMetaData md2 = AliCDBStorage::Instance()->GetCDBMetaData("ZDC/Calib/GainFactors");
114 md2.SetRunRange(1,15);
115
116 // e. Store the object in the "organized" database.
117 // the object will be stored in the file DBFolder/ZDC/Calib/GainFactors/Run1-15_v1.root
118 // Note that, since there is an "overlap" of the new run range with the one specified
119 // in the previous version, the version is automatically increased.
120
121 AliCDBLocal *loc = new AliCDBLocal(DBFolder.Data());
122 AliCDBStorage::Instance()->Put(calibda3, md2);
123
124 /***************************************************************************************************************
125  Part 3:        Last act. 
126                 We want to retrieve the object from the "organized" database folder again.
127                 This time, anyway, we don't want the highest version but version 0 instead.
128                 Therefore we have to specify the version wanted using the "Select" method of AliCDBStorage
129                 and the aliCDBMetaDataSelect object.  
130  ***************************************************************************************************************/
131
132 // a. Create the specific AliCDBStorage instance (AliCDBLocal in this case)
133 loc = new AliCDBLocal(DBFolder.Data());
134
135 // b. Specify the selection criterion. We want version 0 for the object valid for run range (1,100)
136 // NOTE(1): TRegexp expression are valid! E.g. we could type "ZDC/Calib/*" if we want to specify version
137 // for all the "ZDC/Calib" subsamples...
138 // Note(2): we could also not specify the run range, if we want version 0 for any retrieved object
139 AliCDBMetaDataSelect smd("ZDC/Calib/GainFactors",1,100,0);
140 AliCDBStorage::Instance()->Select(smd);
141
142 // c. Get the object
143 AliZDCCalibData *calibda4 = (AliZDCCalibData*) AliCDBStorage::Instance()->Get("ZDC/Calib/GainFactors",5);
144 printf("\nI am in Part4. I've just got \"ZDC/Calib/GainFactors\" object valid for run 5, version 0.\n");
145 printf("ZDC Energy calibration factors: \n");  
146 printf("PM0=%f; PM1=%f; PM2=%f; PM3=%f \n",
147    calibda4->GetEnCalib(0),  calibda4->GetEnCalib(1),  calibda4->GetEnCalib(2),  calibda4->GetEnCalib(3) );  
148    
149 printf("\nEnd of tutorial. Bye bye!! \n");
150
151
152 }