]>
Commit | Line | Data |
---|---|---|
c67b2d9f | 1 | void MainTrank() |
2 | { | |
3 | TStopwatch sw;TDatime time; | |
4 | OLD_S_SD(); SD_D(); //D_C(); | |
5 | cout<<"\nInfo in <MainTrank>: Start time: ";time.Print(); | |
6 | cout<<"Info in <MainTrank>: Stop time: ";time.Set(); time.Print(); | |
7 | cout<<"Info in <MainTrank>: Time used: ";sw.Print(); | |
8 | } | |
9 | ||
d32d34bf | 10 | void ss() |
11 | { | |
c1863e3c | 12 | if(rl->LoadSDigits()) return; |
d32d34bf | 13 | rl->TreeS()->GetEntry(0); |
14 | r->SDigits()->Print(); | |
c67b2d9f | 15 | Info("ss","totally %i",r->SDigits()->GetEntries()); |
d32d34bf | 16 | rl->UnloadSDigits(); |
17 | } | |
18 | ||
c1863e3c | 19 | void sd() |
20 | { | |
21 | if(rl->LoadDigits()) return; | |
22 | rl->TreeD()->GetEntry(0); | |
23 | for(int i=1;i<=7;i++) r->Digits(i)->Print(); | |
24 | rl->UnloadDigits(); | |
25 | } | |
26 | ||
27 | void sc() | |
28 | { | |
29 | if(rl->LoadRecPoints()) return; | |
c67b2d9f | 30 | r->SetTreeAddress(); |
c1863e3c | 31 | rl->TreeR()->GetEntry(0); |
32 | for(int i=1;i<=7;i++) r->Clusters(i)->Print(); | |
33 | rl->UnloadRecPoints(); | |
34 | } | |
8fc0dab8 | 35 | |
36 | Double_t r2d = TMath::RadToDeg(); | |
37 | Double_t d2r = TMath::DegToRad(); | |
38 | ||
fa49f877 | 39 | void DisplFast() |
40 | { | |
41 | AliRICHDisplFast *d = new AliRICHDisplFast(); | |
aed240d4 | 42 | d->Exec(); |
fa49f877 | 43 | } |
44 | ||
45 | ||
543d5224 | 46 | void Digits2Recos() |
c60862bf | 47 | { |
5cb4dfc3 | 48 | AliRICHRecon *detect = new AliRICHRecon("RICH patrec algorithm","Reconstruction"); |
543d5224 | 49 | |
50 | ||
8fc0dab8 | 51 | for (int nev=0; nev< a->GetEventsPerRun(); nev++) { // Event Loop |
543d5224 | 52 | al->GetEvent(nev); |
53 | cout <<endl<< "Processing event:" <<nev<<endl; | |
5cb4dfc3 | 54 | detect->StartProcessEvent(); |
543d5224 | 55 | } // event loop |
fa49f877 | 56 | delete detect; |
543d5224 | 57 | } |
58 | ||
59 | ||
60 | ||
543d5224 | 61 | |
d32d34bf | 62 | void D_C() |
543d5224 | 63 | { |
64 | AliRICHClusterFinder *z=new AliRICHClusterFinder(r); | |
65 | z->Exec(); | |
66 | } | |
d32d34bf | 67 | //__________________________________________________________________________________________________ |
68 | void OLD_S_SD() | |
c60862bf | 69 | { |
d32d34bf | 70 | Info("OLD_S_SD","Start."); |
c60862bf | 71 | |
543d5224 | 72 | rl->LoadHits(); |
c60862bf | 73 | |
74 | for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop | |
75 | al->GetEvent(iEventN); | |
c60862bf | 76 | |
543d5224 | 77 | rl->MakeTree("S"); r->MakeBranch("S"); |
d32d34bf | 78 | r->ResetSDigits(); r->ResetSpecialsOld(); |
543d5224 | 79 | |
c60862bf | 80 | for(Int_t iPrimN=0;iPrimN<rl->TreeH()->GetEntries();iPrimN++){//prims loop |
81 | rl->TreeH()->GetEntry(iPrimN); | |
82 | for(Int_t i=0;i<r->Specials()->GetEntries();i++){//specials loop | |
83 | Int_t padx= ((AliRICHSDigit*)r->Specials()->At(i))->PadX(); | |
84 | Int_t pady= ((AliRICHSDigit*)r->Specials()->At(i))->PadY(); | |
d32d34bf | 85 | Double_t q= ((AliRICHSDigit*)r->Specials()->At(i))->QPad(); |
543d5224 | 86 | Int_t hitN= ((AliRICHSDigit*)r->Specials()->At(i))->HitNumber()-1;//!!! important -1 |
87 | Int_t chamber=((AliRICHhit*)r->Hits()->At(hitN))->C(); | |
88 | Int_t track=((AliRICHhit*)r->Hits()->At(hitN))->GetTrack(); | |
d32d34bf | 89 | r->AddSDigit(chamber,padx+r->Param()->NpadsX()/2,pady+r->Param()->NpadsY()/2,q,track); |
c60862bf | 90 | }//specials loop |
91 | }//prims loop | |
92 | rl->TreeS()->Fill(); | |
93 | rl->WriteSDigits("OVERWRITE"); | |
c60862bf | 94 | }//events loop |
95 | rl->UnloadHits(); rl->UnloadSDigits(); | |
d32d34bf | 96 | Info("OLD_S_SD","Stop."); |
543d5224 | 97 | }//Specials2Sdigits() |
98 | //__________________________________________________________________________________________________ | |
c712cb2f | 99 | void H_SD() |
c60862bf | 100 | { |
c712cb2f | 101 | Info("H_SD","Start."); |
c60862bf | 102 | |
103 | for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop | |
104 | al->GetEvent(iEventN); | |
105 | ||
106 | if(!rl->TreeH()) rl->LoadHits();//from | |
107 | if(!rl->TreeS()) rl->MakeTree("S"); r->MakeBranch("S");//to | |
543d5224 | 108 | |
c60862bf | 109 | for(Int_t iPrimN=0;iPrimN<rl->TreeH()->GetEntries();iPrimN++){//prims loop |
110 | rl->TreeH()->GetEntry(iPrimN); | |
d32d34bf | 111 | for(Int_t iHitN=0;iHitN<3;iHitN++){//hits loop ??? |
c712cb2f | 112 | AliRICHhit *pHit=r->Hits()->At(iHitN); |
113 | TVector3 globX3(pHit->X(),pHit->Y(),pHit->Z()); | |
114 | TVector3 locX3=r->C(pHit->C())->Glob2Loc(globX3); | |
115 | ||
116 | Int_t sector; | |
117 | Int_t iTotQdc=r->Param()->Loc2TotQdc(locX3,pHit->Eloss(),pHit->Pid(),sector); | |
118 | ||
119 | Int_t iPadXmin,iPadXmax,iPadYmin,iPadYmax; | |
120 | r->Param()->Loc2Area(locX3,iPadXmin,iPadYmin,iPadXmax,iPadYmax); | |
121 | cout<<"left-down=("<<iPadXmin<<","<<iPadYmin<<") right-up=("<<iPadXmax<<','<<iPadYmax<<')'<<endl; | |
122 | for(Int_t iPadY=iPadYmin;iPadY<=iPadYmax;iPadY++) | |
123 | for(Int_t iPadX=iPadXmin;iPadX<=iPadXmax;iPadX++){ | |
d32d34bf | 124 | Double_t padQdc=iTotQdc*r->Param()->Loc2PadFrac(locX3,iPadX,iPadY); |
125 | if(padQdc>0.1)r->AddSDigit(pHit->C(),iPadX,iPadY,padQdc,pHit->GetTrack()); | |
126 | } | |
c712cb2f | 127 | }//hits loop |
128 | }//prims loop | |
c60862bf | 129 | rl->TreeS()->Fill(); |
130 | rl->WriteSDigits("OVERWRITE"); | |
131 | }//events loop | |
132 | ||
133 | rl->UnloadHits(); | |
134 | rl->UnloadSDigits(); | |
d32d34bf | 135 | Info("H_SD","Stop."); |
543d5224 | 136 | }//Hits2Sdigits() |
137 | //__________________________________________________________________________________________________ | |
d32d34bf | 138 | void SD_D() |
543d5224 | 139 | { |
d32d34bf | 140 | Info("SD_D","Start."); |
543d5224 | 141 | |
142 | rl->LoadSDigits(); | |
143 | ||
144 | for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop | |
145 | al->GetEvent(iEventN); | |
146 | ||
147 | rl->MakeTree("D");r->MakeBranch("D"); //create TreeD with RICH branches | |
d32d34bf | 148 | r->ResetSDigits();r->ResetDigits();//reset lists of sdigits and digits |
543d5224 | 149 | rl->TreeS()->GetEntry(0); |
d32d34bf | 150 | r->SDigits()->Sort(); |
543d5224 | 151 | |
152 | Int_t kBad=-101; | |
d32d34bf | 153 | Int_t chamber,x,y,tr[3],id; |
154 | Double_t q=kBad; | |
155 | chamber=x=y=tr[0]=tr[1]=tr[2]=id=kBad; | |
543d5224 | 156 | Int_t iNdigitsPerPad=kBad;//how many sdigits for a given pad |
157 | ||
d32d34bf | 158 | for(Int_t i=0;i<r->SDigits()->GetEntries();i++){//sdigits loop (sorted) |
159 | AliRICHdigit *pSdig=(AliRICHdigit*)r->SDigits()->At(i); | |
543d5224 | 160 | if(pSdig->Id()==id){//still the same pad |
161 | iNdigitsPerPad++; | |
d32d34bf | 162 | q+=pSdig->Q(); |
543d5224 | 163 | if(iNdigitsPerPad<=3) |
164 | tr[iNdigitsPerPad-1]=pSdig->T(0); | |
165 | else | |
166 | Info("","More then 3 sdigits for the given pad"); | |
167 | }else{//new pad, add the pevious one | |
08479a10 | 168 | if(id!=kBad&&r->Param()->IsOverTh(chamber,x,y,q)) { |
169 | ||
170 | r->AddDigit(chamber,x,y,q,tr[0],tr[1],tr[2]);//ch-xpad-ypad-qdc-tr1-2-3 | |
171 | } | |
d32d34bf | 172 | chamber=pSdig->C();x=pSdig->X();y=pSdig->Y();q=pSdig->Q();tr[0]=pSdig->T(0);id=pSdig->Id(); |
543d5224 | 173 | iNdigitsPerPad=1;tr[1]=tr[2]=kBad; |
174 | } | |
175 | }//sdigits loop (sorted) | |
176 | ||
08479a10 | 177 | if(r->SDigits()->GetEntries()&&r->Param()->IsOverTh(chamber,x,y,q)) |
178 | r->AddDigit(chamber,x,y,q,tr[0],tr[1],tr[2]);//add the last digit | |
543d5224 | 179 | |
180 | rl->TreeD()->Fill(); | |
181 | rl->WriteDigits("OVERWRITE"); | |
182 | }//events loop | |
183 | rl->UnloadSDigits(); rl->UnloadDigits(); | |
d32d34bf | 184 | r->ResetSDigits();r->ResetDigits();//reset lists of sdigits and digits |
185 | Info("SD_D","Stop."); | |
c60862bf | 186 | } |
187 | ||
543d5224 | 188 | |
189 | ||
d32d34bf | 190 | void OLD_SD_D() |
abb44d7c | 191 | { |
d32d34bf | 192 | Info("SD_DOLD","Start."); |
543d5224 | 193 | |
abb44d7c | 194 | rl->LoadSDigits(); |
abb44d7c | 195 | |
543d5224 | 196 | for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop |
197 | al->GetEvent(iEventN); | |
198 | ||
199 | rl->MakeTree("D");r->MakeBranch("D"); //create TreeD with RICH branches | |
d32d34bf | 200 | r->ResetSDigits();r->ResetDigitsOld();//reset lists of sdigits and digits |
543d5224 | 201 | rl->TreeS()->GetEntry(0); |
d32d34bf | 202 | r->SDigits()->Sort(); |
abb44d7c | 203 | |
543d5224 | 204 | Int_t kBad=-101; |
205 | ||
206 | Int_t tr[3],q[3],dig[5]; for(Int_t i=0;i<3;i++) tr[i]=q[i]=kBad; for(Int_t i=0;i<5;i++) dig[i]=kBad; | |
207 | Int_t chamber=kBad,id=kBad,iNdigitsPerPad=kBad;//how many sdigits for a given pad | |
abb44d7c | 208 | |
d32d34bf | 209 | for(Int_t i=0;i<r->SDigits()->GetEntries();i++){//sdigits loop (sorted) |
210 | AliRICHdigit *pSdig=(AliRICHdigit*)r->SDigits()->At(i); | |
543d5224 | 211 | if(pSdig->Id()==id){//still the same pad |
212 | iNdigitsPerPad++; | |
d32d34bf | 213 | dig[2]+=pSdig->Q();//sum up qdc |
543d5224 | 214 | if(iNdigitsPerPad<=3) |
215 | tr[iNdigitsPerPad-1]=pSdig->T(0); | |
216 | else | |
217 | Info("","More then 3 sdigits for the given pad"); | |
218 | }else{//new pad, add the pevious one | |
219 | if(id!=kBad) r->AddDigitOld(chamber,tr,q,dig); | |
220 | chamber=pSdig->C();dig[0]=pSdig->X();dig[1]=pSdig->Y();dig[2]=pSdig->Qdc();tr[0]=pSdig->T(0);id=pSdig->Id(); | |
221 | iNdigitsPerPad=1;tr[1]=tr[2]=kBad; | |
222 | } | |
223 | }//sdigits loop (sorted) | |
224 | r->AddDigitOld(chamber,tr,q,dig);//add the last digit | |
abb44d7c | 225 | |
543d5224 | 226 | rl->TreeD()->Fill(); |
227 | rl->WriteDigits("OVERWRITE"); | |
228 | }//events loop | |
229 | rl->UnloadSDigits(); rl->UnloadDigits(); | |
d32d34bf | 230 | r->ResetSDigits();r->ResetDigitsOld();//reset lists of sdigits and digits |
231 | Info("SD_DOLD","Stop."); | |
abb44d7c | 232 | } |
08479a10 | 233 | //__________________________________________________________________________________________________ |
abb44d7c | 234 | void Show3() |
d48cca74 | 235 | { |
abb44d7c | 236 | cout<<endl; |
c60862bf | 237 | al->LoadHeader(); al->LoadKinematics(); |
abb44d7c | 238 | |
aed240d4 | 239 | rl->LoadHits(); |
240 | Bool_t isSdigits=!rl->LoadSDigits(); | |
241 | Bool_t isClusters=!rl->LoadRecPoints(); | |
242 | Bool_t isDigits=!rl->LoadDigits();//loaders | |
c60862bf | 243 | |
244 | cout<<endl; cout<<endl; | |
245 | for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop | |
246 | Int_t iNparticles=a->GetEvent(iEventN); | |
abb44d7c | 247 | Int_t iNprims=rl->TreeH()->GetEntries(); |
c60862bf | 248 | |
249 | Int_t iTotalHits=0,iTotalCerenkovs=0,iTotalSpecials=0; | |
abb44d7c | 250 | for(Int_t iPrimN=0;iPrimN<iNprims;iPrimN++){//prims loop |
c60862bf | 251 | rl->TreeH()->GetEntry(iPrimN); |
252 | iTotalHits+=r->Hits()->GetEntries(); | |
253 | iTotalCerenkovs+=r->Cerenkovs()->GetEntries(); | |
254 | iTotalSpecials+=r->Specials()->GetEntries(); | |
abb44d7c | 255 | TParticle *pPrim=al->Stack()->Particle(iPrimN); |
543d5224 | 256 | Info("Show","Evt %4i prim %4i has %4i hits %5i cerenkovs and %5i specials from %s (,%7.2f,%7.2f)", |
c60862bf | 257 | iEventN, |
258 | iPrimN, | |
259 | r->Hits()->GetEntries(), | |
260 | r->Cerenkovs()->GetEntries(), | |
261 | r->Specials()->GetEntries(), | |
262 | pPrim->GetName(), | |
263 | pPrim->Theta()*r2d,pPrim->Phi()*r2d); | |
abb44d7c | 264 | }//prims loop |
543d5224 | 265 | Info("Show-HITS","Evt %i total: %i particles %i primaries %i hits %i cerenkovs %i specials", |
c60862bf | 266 | iEventN, iNparticles, iNprims, iTotalHits,iTotalCerenkovs,iTotalSpecials); |
267 | if(isSdigits){ | |
268 | rl->TreeS()->GetEntry(0); | |
d32d34bf | 269 | Info("Show-SDIGITS","Evt %i contains %5i sdigits",iEventN,r->SDigits()->GetEntries()); |
abb44d7c | 270 | } |
c60862bf | 271 | if(isDigits){ |
272 | rl->TreeD()->GetEntry(0); | |
543d5224 | 273 | for(int i=1;i<=7;i++) |
aed240d4 | 274 | Info("Show-DIGITS","Evt %i chamber %i contains %5i digits", |
275 | iEventN, i, r->Digits(i)->GetEntries()); | |
276 | } | |
277 | if(isClusters){ | |
278 | rl->TreeR()->GetEntry(0); | |
279 | for(int i=1;i<=7;i++) | |
280 | Info("Show-CLUSTERS","Evt %i chamber %i contains %5i clusters", | |
281 | iEventN, i, r->Clusters(i)->GetEntries()); | |
c60862bf | 282 | } |
283 | cout<<endl; | |
abb44d7c | 284 | }//events loop |
aed240d4 | 285 | rl->UnloadHits(); |
286 | if(isSdigits) rl->UnloadSDigits(); | |
287 | if(isDigits) rl->UnloadDigits(); | |
288 | if(isClusters) rl->UnloadRecPoints(); | |
abb44d7c | 289 | al->UnloadHeader(); |
290 | al->UnloadKinematics(); | |
291 | cout<<endl; | |
d48cca74 | 292 | }//void Show() |
aed240d4 | 293 | //__________________________________________________________________________________________________ |
08479a10 | 294 | void ControlPlots() |
295 | { | |
296 | Int_t iChamber = 1; | |
297 | TH1F *pqclusterH1 = new TH1F("qclus","charge of clusters;Q (ADC);events",2000,0.,2000); | |
298 | ||
299 | al->LoadHeader(); al->LoadKinematics(); | |
300 | ||
301 | rl->LoadHits(); | |
302 | Bool_t isSdigits=!rl->LoadSDigits(); | |
303 | Bool_t isClusters=!rl->LoadRecPoints(); | |
304 | Bool_t isDigits=!rl->LoadDigits();//loaders | |
305 | ||
306 | for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop | |
307 | Int_t iNparticles=a->GetEvent(iEventN); | |
308 | Int_t iNprims=rl->TreeH()->GetEntries(); | |
309 | ||
310 | Int_t iTotalHits=0,iTotalCerenkovs=0,iTotalSpecials=0; | |
311 | for(Int_t iPrimN=0;iPrimN<iNprims;iPrimN++){//prims loop | |
312 | rl->TreeH()->GetEntry(iPrimN); | |
313 | iTotalHits+=r->Hits()->GetEntries(); | |
314 | iTotalCerenkovs+=r->Cerenkovs()->GetEntries(); | |
315 | iTotalSpecials+=r->Specials()->GetEntries(); | |
316 | TParticle *pPrim=al->Stack()->Particle(iPrimN); | |
317 | }//prims loop | |
318 | if(isSdigits){ | |
319 | rl->TreeS()->GetEntry(0); | |
320 | } | |
321 | if(isDigits){ | |
322 | rl->TreeD()->GetEntry(0); | |
323 | for(int i=1;i<=7;i++); | |
324 | } | |
325 | if(isClusters){ | |
326 | rl->TreeR()->GetEntry(0); | |
327 | for(Int_t iclus=0;iclus<r->Clusters(iChamber)->GetEntries();iclus++) { | |
328 | pqclusterH1->Fill(((AliRICHcluster*)r->Clusters(iChamber)->At(iclus))->Q()); | |
329 | } | |
330 | } | |
331 | cout<<endl; | |
332 | }//events loop | |
333 | pqclusterH1->Draw(); | |
334 | rl->UnloadHits(); | |
335 | if(isSdigits) rl->UnloadSDigits(); | |
336 | if(isDigits) rl->UnloadDigits(); | |
337 | if(isClusters) rl->UnloadRecPoints(); | |
338 | al->UnloadHeader(); | |
339 | al->UnloadKinematics(); | |
340 |