]>
Commit | Line | Data |
---|---|---|
1 | AliCDBStorage *storLoc, *storGrid; | |
2 | ||
3 | AliCDBEntry *entry=0; | |
4 | TObjString *objstr=0; | |
5 | ||
6 | void DBAccessTutorial(){ | |
7 | ||
8 | AliCDBManager *man = AliCDBManager::Instance(); | |
9 | // pointer man points to the single instance of AliCDBManager. | |
10 | // This will let us avoid typing AliCDBManager::Instance every time... | |
11 | ||
12 | ||
13 | printf("\n<< TUTORIAL >> Activating Grid storage...\n"); | |
14 | storGrid = man->GetStorage("alien://aliendb4.cern.ch:9000;colla;DBGrid;ALICE::CERN::se01"); // replace "colla" with your username! | |
15 | // The default storage is automatically set to this. | |
16 | // One can access default storage with: | |
17 | // (AliCDBStorage*) AliCDBManager::Instance()->GetDefaultStorage() | |
18 | // To check the activation of the default storage: | |
19 | // (Bool_t) AliCDBManager::Instance()->IsDefaultStorageSet() | |
20 | ||
21 | printf("\n<< TUTORIAL >> Activating Local storage...\n"); | |
22 | storLoc = man->GetStorage("local://DBLocal"); | |
23 | // To set the default storage to this one: | |
24 | // AliCDBMAnager::Instance()->SetDefaultStorage("local://DBLocal") or | |
25 | // AliCDBMAnager::Instance()->SetDefaultStorage(storLoc) | |
26 | ||
27 | ///////////////////////////////////////////// | |
28 | // Step 0: Write/read in Local storage // | |
29 | ///////////////////////////////////////////// | |
30 | printf("\n<< TUTORIAL >> ********************************************\n"); | |
31 | printf( "<< TUTORIAL >> **** Step 0: write/read in local storage ***\n"); | |
32 | printf( "<< TUTORIAL >> ********************************************\n"); | |
33 | ||
34 | ||
35 | //create the new object | |
36 | ||
37 | TObjString str1("This is step zero"); // object that will be stored | |
38 | ||
39 | AliCDBId id1("ZDC/Calib/Gain",0,10); // Id of the object: AliCDBId("name", firstRun, lastRun) | |
40 | ||
41 | AliCDBMetaData *md1= new AliCDBMetaData(); // metaData describing the object | |
42 | md1->SetObjectClassName("TObjString"); | |
43 | md1->SetResponsible("Alberto Colla"); | |
44 | md1->SetBeamPeriod(1); | |
45 | md1->SetAliRootVersion("05-04-00"); //root version | |
46 | md1->SetComment("This is a test"); | |
47 | TObjString str("test"); | |
48 | md1->SetProperty("key1",&str); | |
49 | ||
50 | ||
51 | // Store the object into local storage | |
52 | printf("\n<< TUTORIAL >> Storing object into local storage...\n"); | |
53 | storLoc->Put(&str1,id1, md1); // filename: DBLocal/ZDC/Calib/Gain/Run0_10_v0_s0.root | |
54 | ||
55 | ||
56 | // read, update, store again | |
57 | printf("\n<< TUTORIAL >> Retrieve object from local storage...\n"); | |
58 | entry = storLoc->Get("ZDC/Calib/Gain", 5); | |
59 | ||
60 | objstr = (TObjString*) entry->GetObject(); | |
61 | printf("\n<< TUTORIAL >> Object string: %s\n", objstr->GetName()); | |
62 | ||
63 | objstr->SetString("This is step 0.1: slightly better!"); // update object | |
64 | ||
65 | printf("\n<< TUTORIAL >> Storing object into local storage...\n"); | |
66 | storLoc->Put(entry); // store into local: filename = Run0_10_v0_s1.root | |
67 | ||
68 | // read, update, store again | |
69 | printf("\n<< TUTORIAL >> Retrieve object from local storage...\n"); | |
70 | entry = storLoc->Get("ZDC/Calib/Gain", 5); | |
71 | ||
72 | objstr = (TObjString*) entry->GetObject(); | |
73 | printf("\n<< TUTORIAL >> Object string: %s\n", objstr->GetName()); | |
74 | ||
75 | objstr -> SetString("This is step 0.2: much better!"); | |
76 | ||
77 | printf("\n<< TUTORIAL >> Storing object into local storage...\n"); | |
78 | storLoc->Put(entry); // store into local: filename = Run0_10_v0_s2.root | |
79 | ||
80 | /////////////////////////////////////////////////////////////////////// | |
81 | // Step 1: read from Local, update, store locally and into Grid // | |
82 | /////////////////////////////////////////////////////////////////////// | |
83 | printf("\n<< TUTORIAL >> ********************************************\n"); | |
84 | printf( "<< TUTORIAL >> **** Step 1: write/read in Grid storage ***\n"); | |
85 | printf( "<< TUTORIAL >> ********************************************\n"); | |
86 | ||
87 | // read from local | |
88 | printf("\n<< TUTORIAL >> Retrieve object from local storage...\n"); | |
89 | entry = storLoc->Get("ZDC/Calib/Gain", 5); | |
90 | objstr = (TObjString*) entry->GetObject(); | |
91 | printf("\n<< TUTORIAL >> Object string: %s\n", objstr->GetName()); | |
92 | ||
93 | ||
94 | objstr -> SetString("This is step 1: stored into Local and into Grid!"); | |
95 | ||
96 | printf("\n<< TUTORIAL >> Storing object into local storage...\n"); | |
97 | storLoc->Put(entry); // store into local: filename = Run0_10_v0_s3.root | |
98 | ||
99 | printf("\n<< TUTORIAL >> Storing object into Grid storage...\n"); | |
100 | storGrid->Put(entry); // store into grid: filename = DBGrid/ZDC/Calib/Gain/Run0_10_v1.root | |
101 | ||
102 | ||
103 | ||
104 | // step 2: read from Grid, update, store again (into Grid) | |
105 | ||
106 | printf("\n<< TUTORIAL >> Retrieve object from Grid storage...\n"); | |
107 | entry = storGrid->Get("ZDC/Calib/Gain", 5); | |
108 | ||
109 | objstr = (TObjString*) entry->GetObject(); | |
110 | printf("\n<< TUTORIAL >> Object string: %s\n", objstr->GetName()); | |
111 | ||
112 | objstr -> SetString("This is step 2: update and store into Grid!"); | |
113 | ||
114 | printf("\n<< TUTORIAL >> Storing object into Grid storage...\n"); | |
115 | storGrid->Put(entry); // store into grid: filename = Run0_10_v2.root | |
116 | ||
117 | // step 3: read, update, store again (into Grid) | |
118 | printf("\n<< TUTORIAL >> Retrieve object from Grid storage...\n"); | |
119 | entry = storGrid->Get("ZDC/Calib/Gain", 5); | |
120 | objstr = (TObjString*) entry->GetObject(); | |
121 | printf("\n<< TUTORIAL >> Object string: %s\n", objstr->GetName()); | |
122 | ||
123 | objstr = (TObjString*) entry->GetObject(); | |
124 | objstr -> SetString("This is step 3: update and store into Grid!"); | |
125 | ||
126 | printf("\n<< TUTORIAL >> Storing object into Grid storage...\n"); | |
127 | storGrid->Put(entry); // store into grid: filename = Run0_10_v3.root | |
128 | ||
129 | //////////////////////////////////////////////// | |
130 | // Step 3.0: read from Grid, store locally! // | |
131 | //////////////////////////////////////////////// | |
132 | printf("\n<< TUTORIAL >> **********************************************\n"); | |
133 | printf( "<< TUTORIAL >> **** Step 3: read from Grid, store locally ***\n"); | |
134 | printf( "<< TUTORIAL >> **********************************************\n"); | |
135 | ||
136 | printf("\n<< TUTORIAL >> Retrieve object from Grid storage...\n"); | |
137 | entry = storGrid->Get("ZDC/Calib/Gain", 5); | |
138 | objstr = (TObjString*) entry->GetObject(); | |
139 | printf("\n<< TUTORIAL >> Object string: %s\n", objstr->GetName()); | |
140 | ||
141 | printf("\n<< TUTORIAL >> Storing object into local storage...\n"); | |
142 | storLoc->Put(entry); // local: Run0_10_v3_s0.root | |
143 | ||
144 | // Step 3.1: read from Local, update, store again into Local | |
145 | printf("\n<< TUTORIAL >> Retrieve object from local storage...\n"); | |
146 | entry = storLoc->Get("ZDC/Calib/Gain", 5); | |
147 | objstr = (TObjString*) entry->GetObject(); | |
148 | printf("\n<< TUTORIAL >> Object string: %s\n", objstr->GetName()); | |
149 | ||
150 | objstr->SetString("This is step 3.1: updated locally!"); | |
151 | ||
152 | printf("\n<< TUTORIAL >> Storing object into local storage...\n"); | |
153 | storLoc->Put(entry); // local: Run0_10_v3_s1.root | |
154 | ||
155 | ///////////////////////////////////////////////////////////// | |
156 | // Step 3.2: read again from Grid version 3, store locally // | |
157 | // -> ERROR, local update already present!! // | |
158 | ///////////////////////////////////////////////////////////// | |
159 | printf("\n<< TUTORIAL >> **********************************************\n"); | |
160 | printf( "<< TUTORIAL >> **** Step 3.2: error test ***\n"); | |
161 | printf( "<< TUTORIAL >> **********************************************\n"); | |
162 | ||
163 | printf("\n<< TUTORIAL >> Retrieve object from Grid storage...\n"); | |
164 | entry = (AliCDBEntry*) storGrid->Get("ZDC/Calib/Gain",5); | |
165 | objstr = (TObjString*) entry->GetObject(); | |
166 | printf("\n<< TUTORIAL >> Object string: %s\n", objstr->GetName()); | |
167 | ||
168 | printf("\n<< TUTORIAL >> Trying to store object into local storage...\n"); | |
169 | storLoc->Put(entry); // ERROR message! | |
170 | ||
171 | ///////////////////////////////////////////////////////////// | |
172 | // Step 4: read from local, DRAIN to a dump storage: DBDrain.root! // | |
173 | ///////////////////////////////////////////////////////////// | |
174 | printf("\n<< TUTORIAL >> ************************************************************\n"); | |
175 | printf( "<< TUTORIAL >> **** Step 4: Read from local and DRAIN to a dump storage ***\n"); | |
176 | printf( "<< TUTORIAL >> ************************************************************\n"); | |
177 | ||
178 | printf("\n<< TUTORIAL >> Setting Drain storage ...\n"); | |
179 | AliCDBManager::Instance()->SetDrain("dump://DBDrain.root"); //setting Drain storage | |
180 | ||
181 | // Testing default storage behavior: let's set default storage to Local storage | |
182 | AliCDBManager::Instance()->SetDefaultStorage(storLoc); | |
183 | ||
184 | // read from local (default) storage. The object is automatically drained into the drain storage! | |
185 | printf("\n<< TUTORIAL >> Retrieve object from local storage...\n"); | |
186 | entry = man->GetDefaultStorage()->Get("ZDC/Calib/Gain",5); | |
187 | objstr = (TObjString*) entry->GetObject(); | |
188 | printf("\n<< TUTORIAL >> Object string: %s\n", objstr->GetName()); | |
189 | ||
190 | ///////////////////////////////////////////////////////////// | |
191 | // Step 5: READ AND DRAIN multiple objects (with GetAll) // | |
192 | ///////////////////////////////////////////////////////////// | |
193 | printf("\n<< TUTORIAL >> *******************************************************\n"); | |
194 | printf( "<< TUTORIAL >> **** Step 5: Read and Drain multiple objects ***\n"); | |
195 | printf( "<< TUTORIAL >> *******************************************************\n"); | |
196 | ||
197 | ||
198 | // Step 5.1: Store an object into four different Grid databases | |
199 | ||
200 | TObjString str2("This is the TPC/Calib/Gain object valid for runs 0 to 10."); | |
201 | AliCDBId id2("TPC/Calib/Gain",0,10); | |
202 | ||
203 | TObjString str3("This is the TPC/Calib/Drift object valid for runs 0 to 20."); | |
204 | AliCDBId id3("TPC/Calib/Drift",0,20); | |
205 | ||
206 | TObjString str4("This is the TPC/Align/Angles object valid for runs 0 to 15."); | |
207 | AliCDBId id4("TPC/Align/Angles",0,15); | |
208 | ||
209 | TObjString str5("This is the TPC/Align/Position object valid for runs 0 to 8."); | |
210 | AliCDBId id5("TPC/Align/Positions",0,8); | |
211 | ||
212 | printf("\n<< TUTORIAL >> Storing more objects into Grid storage...\n"); | |
213 | storGrid->Put(&str2,id2,md1); | |
214 | storGrid->Put(&str3,id3,md1); | |
215 | storGrid->Put(&str4,id4,md1); | |
216 | storGrid->Put(&str5,id5,md1); | |
217 | ||
218 | // Step 5.2: Read all the TPC objects with GetAll and drain into DBDrain.root | |
219 | ||
220 | printf("\n<< TUTORIAL >> Retrieve more objects from Grid storage and drain them into Dump ...\n"); | |
221 | TList *list = (TList*)storGrid->GetAll("TPC/*",5); | |
222 | ||
223 | // That's all folks! Delete AliCDBManager instance and metaData object | |
224 | ||
225 | printf( "<< TUTORIAL >> **** That's all folks!! ***\n"); | |
226 | ||
227 | ||
228 | AliCDBManager::Instance()->Destroy(); | |
229 | delete entry; | |
230 | delete md1; | |
231 | ||
232 | } |