1 AliRun *a; AliRunLoader *al; TGeoManager *g; //globals for easy manual manipulations
2 AliHMPID *h; AliLoader *hl; AliHMPIDParam *hp;
3 Bool_t isGeomType=kFALSE;
8 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
11 isGeomType=!isGeomType;
12 if(g) delete g; if(hp) delete hp; //delete current TGeoManager and AliHMPIDParam
13 if(isGeomType) g=TGeoManager::Import("geometry.root");
14 else g=TGeoManager::Import("misaligned_geometry.root");
15 hp=AliHMPIDParam::Instance();
17 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
20 TString status="Status: ";
21 if(gSystem->IsFileInIncludePath("galice.root")){
22 status+="galice.root: ";
23 al=AliRunLoader::Open(); //try to open galice.root from current dir
24 if(gAlice) delete gAlice; //in case we execute this in aliroot delete default AliRun object
25 al->LoadgAlice(); a=al->GetAliRun(); //take new AliRun object from galice.root
26 hl=al->GetDetectorLoader("HMPID"); h=(AliHMPID*)a->GetDetector("HMPID"); //get HMPID object from galice.root
28 status+=(h)? "HMPID": "PROBLEM PROBLEM PROBLEM- no HMPID";
29 nMaxEvt=al->GetNumberOfEvents()-1;
30 status+=Form(" Event(s) 0-%i",nMaxEvt);
32 status+="PROBLEM PROBLEM PROBLEM no galice.root";
34 status+=Form(" curent event %i",nCurEvt);
36 pMenu = new TControlBar("horizontal",status.Data(),0,0);
37 pMenu->AddButton(" ","","");
38 pMenu->AddButton(" General ","General()" ,"general items which do not depend on any files");
39 pMenu->AddButton(" ","" ,"");
40 pMenu->AddButton(" Sim data ","SimData()" ,"items which expect to have simulated files" );
41 pMenu->AddButton(" ","" ,"");
42 pMenu->AddButton(" Raw data ","RawData()" ,"items which expect to have raw files" );
43 pMenu->AddButton(" "," " ,"");
44 pMenu->AddButton(" Test ","Test()" ,"all test utilities");
45 pMenu->AddButton(" PREV EVENT ","PrevEvent()" ,"Set the previous event" );
46 pMenu->AddButton(" NEXT EVENT ","NextEvent()","Set the next event" );
47 pMenu->AddButton(" Quit ",".q" ,"close session" );
50 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
53 TControlBar *pMenu = new TControlBar("vertical","General purpose",100,50);
54 pMenu->AddButton("Debug ON","don();" ,"Switch debug on-off" );
55 pMenu->AddButton("Debug OFF","doff();" ,"Switch debug on-off" );
56 pMenu->AddButton("Geo GUI","geo();" ,"Shows geometry" );
57 pMenu->AddButton("Browser","new TBrowser;" ,"Start ROOT TBrowser" );
60 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
63 TControlBar *pSim = new TControlBar("vertical","Sim data",310,50);
64 pSim->AddButton("Display ","hed();" ,"Display Fast");
65 pSim->AddButton("HITS QA" ,"hqa()" ,"QA plots for hits: hqa()");
66 pSim->AddButton("Print stack" ,"stack();" ,"To print hits: hp(evt)");
67 pSim->AddButton("Print hits" ,"hp(nCurEvt);" ,"To print hits: hp(evt)");
68 pSim->AddButton("Print sdigits" ,"sp(nCurEvt);" ,"To print sdigits: sp(evt)");
69 pSim->AddButton("Print digits" ,"dp(nCurEvt);" ,"To print digits: dp(evt)");
70 pSim->AddButton("Print clusters" ,"cp(nCurEvt);" ,"To print clusters: cp(evt)");
73 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
76 TControlBar *pMenu = new TControlBar("vertical","Raw data",580,50);
77 pMenu->AddButton("ESD print" ,"ep();" ,"To print ESD info: ep()" );
78 pMenu->AddButton("ESD QA" ,"eq();" ,"To draw ESD hists: eq()" );
79 pMenu->AddButton("Clusters print" ,"cp();" ,"To print clusters: cp()" );
80 pMenu->AddButton("Clusters QA" ,"cq();" ,"To draw clusters hists: cq()" );
81 pMenu->AddButton("Print Matrix" ,"mp();" ,"To print prob matrix: mp()" );
82 pMenu->AddButton("Print occupancy" ,"r->OccupancyPrint(-1);" ,"To print occupancy" );
83 pMenu->AddButton("Print event summary " ,"r->SummaryOfEvent();" ,"To print a summary of the event" );
86 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
89 TControlBar *pTst = new TControlBar("vertical","Test",625,50);
90 pTst->AddButton("TEST Display " ,"sed();" ,"Display Fast");
91 pTst->AddButton("Test all" ,"tst();" ,"test hits->sdigits->digits" );
92 pTst->AddButton("Segmentation" ,"ts()" ,"test segmentation methods" );
93 pTst->AddButton("Test response" ,"AliHMPIDParam::TestResp();","Test AliHMPIDParam response methods" );
94 pTst->AddButton("Print map" ,"PrintMap();" ,"Test AliHMPIDParam transformation methods" );
95 pTst->AddButton("Test Recon" ,"rec();" ,"Test AliHMPIDRecon" );
98 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
101 void doff(){ Printf("DebugOFF"); AliLog::SetGlobalDebugLevel(0);}
102 void don() { Printf("DebugON"); AliLog::SetGlobalDebugLevel(AliLog::kDebug);}
104 void geo ( ) {gGeoManager->GetTopVolume()->Draw("ogl");}
106 void du ( ) {h->Dump ( );} //utility display
108 void PrevEvent() {nCurEvt--;if(nCurEvt<0 )nCurEvt=0 ;pMenu->SetTitle(Form("Event(s): 0-%i Current event %i",nMaxEvt,nCurEvt));}
109 void NextEvent() {nCurEvt++;if(nCurEvt>=nMaxEvt)nCurEvt=nMaxEvt;pMenu->SetTitle(Form("Event(s): 0-%i Current event %i",nMaxEvt,nCurEvt));}
110 void stack( ) {AliHMPIDParam::Stack();}
111 void tid (Int_t tid,Int_t evt=0) {AliHMPIDParam::Stack(evt,tid);}
112 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
116 Double_t r2d=TMath::RadToDeg();
118 Double_t x=AliHMPIDDigit::SizeAllX(),y=AliHMPIDDigit::SizeAllY();
122 for(int ch=6;ch>=0;ch--){
123 AliHMPIDDigit dL,dR; dL.Manual2(ch,2,0 ,24);
124 dR.Manual2(ch,3,79,24);
125 TVector3 lt=rp->Lors2Mars(ch,0,y); TVector3 rt=rp->Lors2Mars(ch,x,y);
126 TVector3 ce=rp->Lors2Mars(ch,x/2,y/2);
127 TVector3 lb=rp->Lors2Mars(ch,0,0); TVector3 rb=rp->Lors2Mars(ch,x,0);
129 Printf(" ____________________________");
130 Printf("|%6.2fcm %6.2fcm|" ,lt.Mag() , rt.Mag() );
131 Printf("|%6.2fde %6.2fde|" ,lt.Theta()*r2d , rt.Theta()*r2d );
132 Printf("|%6.2fde %6.2fde|" ,lt.Phi()*r2d , rt.Phi()*r2d );
134 Printf("|DDL %2i %7.2fcm DDL %2i|" ,dL.DdlIdx() , ce.Mag() , dR.DdlIdx() );
135 Printf("| 0x%x %7.2fdeg 0x%x|" ,dL.DdlId() , ce.Theta()*r2d , dR.DdlId() );
136 Printf("| %7.2fdeg |" , ce.Phi()*r2d );
138 Printf("|%6.2fcm %6.2fcm|" ,lb.Mag() , rb.Mag() );
139 Printf("|%6.2fde %6.2fde|" ,lb.Theta()*r2d , rb.Theta()*r2d );
140 Printf("|%6.2fde Ch%i %6.2fde|" ,lb.Phi()*r2d , ch , rb.Phi()*r2d );
141 Printf(" ----------------------------");
145 for(int i=0;i<1000;i++){
146 Float_t xout=0,xin=gRandom->Rndm()*130.60;
147 Float_t yout=0,yin=gRandom->Rndm()*126.16;
148 Int_t c=gRandom->Rndm()*6;
149 rp->Lors2Mars(c,xin,yin,m);
150 rp->Mars2Lors(c,m,xout,yout);
151 if( (xin-xout) != 0) Printf("Problem in X");
152 if( (yin-yout) != 0) Printf("Problem in Y");
155 Int_t ddl,r,d,a,ch,raw,pc,px,py; AliHMPIDDigit dd;
157 ddl=0;raw=0x2214000;r= 8;d=8;a=20;
158 ddl=1;raw=0x2214000;r= 8;d=8;a=20;
161 ddl=2;raw=0x08d6000;r= 2;d=3;a=22;
162 ddl=3;raw=0x08d6000;r= 2;d=3;a=22;
165 ddl=6;raw=0x592e000;r=22;d=4;a=46;ch=3;pc=4;px=55;py=5;dd.Raw(ddl,raw);
166 Printf("(ch=%i,pc=%i,x=%2i,y=%2i) ddl=%i raw=0x%h (r=%2i,d=%2i,a=%2i)",
167 ch, pc, px, py, ddl, raw, r, d, a); dd.Print();
168 ddl=7;raw=0x592e000;r=22;d=4;a=46;ch=3;pc=1;
171 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
172 void t1(Int_t case=1)
174 AliHMPIDDigit *d[10]; for(Int_t i=0;i<10;i++) d[i]=new AliHMPIDDigit;
182 d[0]->Manual2(1,2,67,26, 33);
183 d[1]->Manual2(1,2,66,25,431); d[2]->Manual2(1,2,67,25, 21);
184 d[3]->Manual2(1,2,65,24,127); d[4]->Manual2(1,2,66,24, 54); d[5]->Manual2(1,2,67,24, 5);
185 d[6]->Manual2(1,2,65,23, 20); d[7]->Manual2(1,2,66,23, 5); d[8]->Manual2(1,2,67,23, 6);
188 d[0]->Manual2(0,0,36,14, 8);
189 d[1]->Manual2(0,0,36,13, 33); d[2]->Manual2(0,0,37,13, 22);
193 for(int i=0;i<iNdig;i++) c.DigAdd(d[i]); c.Print();
196 TClonesArray *cl=new TClonesArray("AliHMPIDCluster");
203 void tst(Int_t nEvts=111,Int_t type=999)
206 TLegend *lQ=new TLegend(0.5,0.5,0.9,0.9);
208 TH1F *hQ7 =new TH1F("hQ7" ,"" ,300,-50,2000); hQ7 ->SetLineColor(kRed); lQ->AddEntry(hQ7 ,"Ckov 7 eV"); hQ7->SetStats(0);
209 TH1F *hQ200=new TH1F("hQ200","" ,300,-50,2000); hQ200->SetLineColor(kBlack); lQ->AddEntry(hQ200,"mip 200 eV");
210 TH1F *hQ500=new TH1F("hQ500","" ,300,-50,2000); hQ500->SetLineColor(kCyan); lQ->AddEntry(hQ500,"mip 500 eV");
211 TH1F *hQ900=new TH1F("hQ900","" ,300,-50,2000); hQ900->SetLineColor(kGreen); lQ->AddEntry(hQ900,"mip 900 eV");
213 TH1F *hCluPerEvt=new TH1F("hCluPerEvt","# clusters per event",11,-0.5,10.5);
214 TH1F *hCluChi2 =new TH1F("hChi2","Chi2 ",1000,0,100);
215 TH1F *hCluFlg =new TH1F("hCluFlg","Cluster flag",14,-1.5,12.5); hCluFlg->SetFillColor(5);
216 TH1F *hCluRawSize= new TH1F("hCluRawSize","Raw cluster size ",100,0,100);
218 TH2F *pCluMapSi1=new TH2F("cluMapSi1","Size 1 map" ,1700,-10,160,1700,-10,160);
219 TH2F *pCluMapLo0=new TH2F("cluMNoLo0","Loc Max 0 map" ,1700,-10,160,1700,-10,160);
220 TH2F *pCluMapLo1=new TH2F("cluMapLo1","Loc Max 1 map" ,1700,-10,160,1700,-10,160);
221 TH2F *pCluMapUnf=new TH2F("cluMapUnf","Unfolded map" ,1700,-10,160,1700,-10,160);
222 TH2F *pCluMapEdg=new TH2F("cluMapEdg","On edge map" ,1700,-10,160,1700,-10,160);
223 TH2F *pCluMapCoG=new TH2F("cluMapCoG","CoG map" ,1700,-10,160,1700,-10,160);
224 TH2F *pCluMapEmp=new TH2F("cluMapEmp","undefined-empty" ,1700,-10,160,1700,-10,160);
226 TH1F *hHitCluDifX = new TH1F("hHitCluDifX" ,";entries;x_{Hit}-x_{Clu} [cm]" ,2000,-2,2); hHitCluDifX->Sumw2(); hHitCluDifX->SetFillColor(kYellow);
227 TH1F *hHitCluDifY = new TH1F("hHitCluDifY" ,";entries;y_{Hit}-y_{Clu} [cm]" ,2000,-2,2); hHitCluDifY->Sumw2(); hHitCluDifY->SetFillColor(kYellow);
228 TH2F *hHitCluDifXY= new TH2F("hHitCluDifXY",";x_{Hit}-x_{Clu};y_{Hit}-y_{Clu}",2000,-2,2,2000,-2,2);hHitCluDifXY->Sumw2();
229 TH1F *hHitCluDifQ = new TH1F("hHitCluDifQ" ,";entries;Q_{Hit}-Q_{Clu}" ,200 ,-100,100); hHitCluDifQ->Sumw2(); hHitCluDifQ->SetFillColor(kYellow);
231 Float_t e200=200e-9,e500=500e-9,e900=900e-9,e7=7e-9;//predefined Eloss
234 AliHMPIDHit hit(0,0,kProton,0,0,0);
235 for(int i=0;i<10000;i++){hQ200->Fill(hit.QdcTot(e200)); hQ500->Fill(hit.QdcTot(e500)); hQ900->Fill(hit.QdcTot(e900)); hQ7 ->Fill(hit.QdcTot(e7));}
237 TClonesArray hits("AliHMPIDHit"); TClonesArray sdigs("AliHMPIDDigit");
238 TObjArray digs(7); for(Int_t i=0;i<7;i++) digs.AddAt(new TClonesArray("AliHMPIDDigit"),i);
239 TObjArray clus(7); for(Int_t i=0;i<7;i++) clus.AddAt(new TClonesArray("AliHMPIDCluster"),i);
242 for(Int_t iEvt=0;iEvt<nEvts;iEvt++){//events loop
243 if(iEvt%500==0)Printf("============> iEvt = %d ",iEvt);
245 Int_t ch,pid; Float_t e,hitx,hity,hitq;
246 Int_t nHits=(type==999)?1:40;
247 for(Int_t iHit=0;iHit<nHits;iHit++){//hits loop for the current event
249 case 0: ch=0;pid=kProton;e=e200;hitx=16.0+gRandom->Rndm()*0.8;hity= 16.8+gRandom->Rndm()*0.84;break; //mip ramdomly distributed in one pad in the middle
250 case 1: ch=0;pid=kProton;e=e200;hitx=0.4;hity=0.42;break; //mip in left-hand bottom coner of chamber 0
251 case 2: ch=0;pid=kProton;e=e200;hitx=0.4;hity=30 ;break; //mip on left edge of chamber 0
252 case 3: ch=0;pid=kProton;e=e200;hitx=40; hity=0.42;break; //mip on bottom edge of chamber 0
253 default: ch=gRandom->Rndm()*6; pid=(gRandom->Rndm()>0.9)? kProton:kCerenkov;
255 e=gRandom->Rndm()*900e-9;
257 e=5.5e-9+3e-9*gRandom->Rndm();
258 x=gRandom->Rndm()*AliHMPIDDigit::SizeAllX(); y=gRandom->Rndm()*AliHMPIDDigit::SizeAllY();break; //random hit
260 new(hits[iHit]) AliHMPIDHit(ch,e,pid,iHit,hitx,hity);
264 AliHMPIDv1::Hit2Sdi(&hits,&sdigs);
265 AliHMPIDDigitizer::Sdi2Dig(&sdigs,&digs);
266 AliHMPIDReconstructor::Dig2Clu(&digs,&clus);
268 for(Int_t iCh=AliHMPIDDigit::kMinCh;iCh<=AliHMPIDDigit::kMaxCh;iCh++){//chambers loop
269 TClonesArray *pDigs=(TClonesArray *)digs.UncheckedAt(iCh);
270 TClonesArray *pClus=(TClonesArray *)clus.UncheckedAt(iCh);
272 hCluPerEvt->Fill(pClus->GetEntriesFast());
273 for(Int_t iClu=0;iClu<pClus->GetEntriesFast();iClu++){//clusters loop
274 AliHMPIDCluster *pClu=(AliHMPIDCluster*)pClus->UncheckedAt(iClu);
275 Float_t clux=pClu->X(); Float_t cluy=pClu->Y(); Float_t cluq=pClu->Q();
276 hCluFlg->Fill(pClu->Status());
277 hCluChi2->Fill(pClu->Chi2());
278 hCluRawSize->Fill(pClu->Size());
280 switch(pClu->Status()){
281 case AliHMPIDCluster::kSi1: pCluMapSi1->Fill(clux,cluy); break;
282 case AliHMPIDCluster::kLo1: pCluMapLo1->Fill(clux,cluy); break;
283 case AliHMPIDCluster::kUnf: pCluMapUnf->Fill(clux,cluy); break;
284 case AliHMPIDCluster::kMax: pCluMapMax->Fill(clux,cluy); break;
285 case AliHMPIDCluster::kEdg: pCluMapEdg->Fill(clux,cluy); break;
286 case AliHMPIDCluster::kCoG: pCluMapCoG->Fill(clux,cluy); break;
287 case AliHMPIDCluster::kNoLoc: pCluMapNoLoc->Fill(clux,cluy); break;
288 default: pCluMapEmp->Fill(clux,cluy); break;
291 hHitCluDifX->Fill(hitx-clux); hHitCluDifY->Fill(hity-cluy); hHitCluDifXY->Fill(hitx-clux,hity-cluy); hHitCluDifQ->Fill(hitq-cluq);
296 hits.Delete(); sdigs.Delete(); for(int i = 0;i<7;i++){((TClonesArray*)digs.At(i))->Delete();((TClonesArray*)clus.At(i))->Delete();}
299 gStyle->SetPalette(1);
300 TCanvas *pC2=new TCanvas("Digit canvas","Digit canvas",1280,800); pC2->Divide(3,3);
301 pC2->cd(1);gPad->SetLogy(1);hHitCluDifX->Draw("hist");
302 pC2->cd(2);gPad->SetLogy(1);hHitCluDifY->Draw("hist");
303 pC2->cd(3);gPad->SetLogz(1);hHitCluDifXY->Draw("colz");
304 pC2->cd(4);gPad->SetLogy(1);hHitCluDifQ->Draw("hist");
305 pC2->cd(5);gPad->SetLogy(1);hCluFlg->Draw();
306 pC2->cd(6);gPad->SetLogy(1);hCluChi2->Draw();
307 pC2->cd(7); hCluRawSize->Draw();
308 pC2->cd(8); hCluPerEvt->Draw("colz");
309 pC2->cd(9); hQckov->Draw(); hQm200->Draw("same"); hQm500->Draw("same"); hQm900->Draw("same"); lQ->Draw();
310 TCanvas *pC1=new TCanvas("ClusterMaps","Cluster maps",1280,800); pC1->Divide(3,3);
311 pC1->cd(1); pCluMapSi1->Draw(); DrawPc(kFALSE);
312 pC1->cd(2); pCluMapLo1->Draw(); DrawPc(kFALSE);
313 pC1->cd(3); pCluMapUnf->Draw(); DrawPc(kFALSE);
314 pC1->cd(5); pCluMapMax->Draw(); DrawPc(kFALSE);
315 pC1->cd(6); pCluMapEdg->Draw(); DrawPc(kFALSE);
316 pC1->cd(7); pCluMapCoG->Draw(); DrawPc(kFALSE);
317 pC1->cd(8); pCluMapNoLoc->Draw();DrawPc(kFALSE);
318 pC1->cd(9); pCluMapEmp->Draw(); DrawPc(kFALSE);
320 pC1->SaveAs("$HOME/HitMaps.png"); //?????
321 pC2->SaveAs("$HOME/HitCluDif.gif");
323 Printf("Digits - raw -digits conversion...");
325 AliHMPIDDigit d1,d2; Int_t ddl,r,d,a;UInt_t w32;
326 for(Int_t iCh=AliHMPIDDigit::kMinCh;iCh<=AliHMPIDDigit::kMaxCh;iCh++)
327 for(Int_t iPc=AliHMPIDDigit::kMinPc;iPc<=AliHMPIDDigit::kMaxPc;iPc++)
328 for(Int_t iPx=AliHMPIDDigit::kMinPx;iPx<=AliHMPIDDigit::kMaxPx;iPx++)
329 for(Int_t iPy=AliHMPIDDigit::kMinPy;iPy<=AliHMPIDDigit::kMaxPy;iPy++){
330 d1.Set(iCh,iPc,iPx,iPy,3040); //set digit
331 d1.Raw(w32,ddl,r,d,a); //get raw word for this digit
332 d2.Raw(w32,ddl); //set another digit from that raw word
333 if(d1.Compare(&d2)) {d1.Print(); d2.Print(); Printf("");}//compare them
339 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
340 void hp(Int_t iEvt=0)
342 //Prints a list of HMPID hits for a given event. Default is event number 0.
343 Printf("List of HMPID hits for event %i",iEvt);
344 if(al->GetEvent(iEvt)) return;
345 if(hl->LoadHits()) return;
348 for(Int_t iPrim=0;iPrim<hl->TreeH()->GetEntries();iPrim++){//prims loop
349 hl->TreeH()->GetEntry(iPrim);
351 iTotHits+=h->Hits()->GetEntries();
354 Printf("totally %i hits for event %i",iTotHits,iEvt);
356 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
357 void sp(Int_t iEvt=0)
359 //prints a list of HMPID sdigits for a given event
360 Printf("List of HMPID sdigits for event %i",iEvt);
361 if(al->GetEvent(iEvt)) return;
362 if(hl->LoadSDigits()) return;
364 hl->TreeS()->GetEntry(0);
365 h->SdiLst()->Print();
367 Printf("totally %i sdigits for event %i",h->SdiLst()->GetEntries(),iEvt);
369 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
370 void dp(Int_t iEvt=0)
372 //prints a list of HMPID digits for a given event
373 Printf("List of HMPID digits for event %i",iEvt);
374 if(al->GetEvent(iEvt)) return;
375 if(hl->LoadDigits()) return;
377 hl->TreeD()->GetEntry(0);
378 h->DigLst()->Print();
380 for(Int_t i=0;i<7;i++) {totDigs+=h->DigLst(i)->GetEntries();}
382 Printf("totally %i digits for event %i",totDigs,iEvt);
384 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
385 void cp(Int_t iEvt=0)
386 {//prints a list of HMPID clusters for a given event
387 Printf("List of HMPID clusters for event %i",iEvt);
388 if(al->GetEvent(iEvt)) return;
389 if(hl->LoadRecPoints()) return;
391 hl->TreeR()->GetEntry(0);
392 h->CluLst()->Print();
394 Int_t iCluCnt=0; for(Int_t iCh=0;iCh<7;iCh++) iCluCnt+=h->CluLst(iCh)->GetEntries();
396 hl->UnloadRecPoints();
397 Printf("totally %i clusters for event %i",iCluCnt,iEvt);
399 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
403 TClonesArray hits ("AliHMPIDDigit");
404 TClonesArray sdigs("AliHMPIDDigit");
406 AliHMPIDHit hit(0,45e-9,kProton,33,0,0);