]>
Commit | Line | Data |
---|---|---|
8282f9d0 | 1 | TCanvas *pAll=0; |
2 | AliRunLoader *gAL=0; AliLoader *gHL=0; AliESD *gEsd=0; TTree *gEsdTr=0; AliHMPID *gH=0; | |
3 | Int_t gEvt=0; Int_t gMaxEvt=0; | |
bd73b83f | 4 | TObjArray *pNmean; |
126b3e0e | 5 | |
6 | TChain *pCosCh=new TChain("cosmic"); //clm: Define TChain for cosmic | |
7 | TObjArray *pCosDigAll=0; //clm: Define global Digits | |
8 | TObjArray *pCosCluAll=0; //clm: Define global Clusters | |
9 | Int_t gCosRun=0; //clm: global cosmic event number | |
8282f9d0 | 10 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
126b3e0e | 11 | void Hdisp(Int_t cosRun=44) //clm: Select cosmic file for display |
8282f9d0 | 12 | {//display events from files if any in current directory or simulated events |
50e69536 | 13 | pAll=new TCanvas("all","",1300,900); pAll->Divide(3,3,0,0); |
14 | // pAll->ToggleEditor(); | |
8282f9d0 | 15 | pAll->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",0,"","DoZoom(Int_t,Int_t,Int_t,TObject*)"); |
bd73b83f | 16 | |
17 | OpenCalib(); | |
126b3e0e | 18 | if(gSystem->IsFileInIncludePath("galice.root")){// tries to open session |
19 | if(gAlice) delete gAlice; //in case we execute this in aliroot delete default AliRun object | |
20 | gAL=AliRunLoader::Open(); //try to open galice.root from current dir | |
21 | gAL->LoadgAlice(); //take new AliRun object from galice.root | |
22 | gHL=gAL->GetDetectorLoader("HMPID"); gH=(AliHMPID*)gAL->GetAliRun()->GetDetector("HMPID"); //get HMPID object from galice.root | |
23 | gMaxEvt=gAL->GetNumberOfEvents()-1; | |
24 | gHL->LoadHits(); gHL->LoadSDigits(); gHL->LoadDigits(); gHL->LoadRecPoints(); | |
8282f9d0 | 25 | |
5582ed3a | 26 | AliHMPIDTracker::SetFieldMap(gAL->GetAliRun()->Field(),kTRUE); |
27 | ||
126b3e0e | 28 | TFile *pEsdFl=TFile::Open("AliESDs.root"); gEsdTr=(TTree*) pEsdFl->Get("esdTree"); gEsdTr->SetBranchAddress("ESD", &gEsd); |
29 | pAll->cd(7); TButton *pBtn=new TButton("Next","ReadEvt()",0,0,0.2,0.1); pBtn->Draw(); | |
30 | TButton *pHitBtn=new TButton("Print hits","PrintHits()",0,0.2,0.3,0.3); pHitBtn->Draw(); | |
31 | TButton *pSdiBtn=new TButton("Print sdis","PrintSdis()",0,0.4,0.3,0.5); pSdiBtn->Draw(); | |
32 | TButton *pDigBtn=new TButton("Print digs","PrintDigs()",0,0.6,0.3,0.7); pDigBtn->Draw(); | |
33 | TButton *pCluBtn=new TButton("Print clus","PrintClus()",0,0.8,0.3,0.9); pCluBtn->Draw(); | |
34 | ReadEvt(); | |
35 | } | |
36 | else if ( gSystem->IsFileInIncludePath(Form("cosmic%d.root",cosRun))){ //clm: Check if cosmic file is in the folder | |
37 | gCosRun=cosRun; | |
38 | pCosCh->Add(Form("cosmic%d.root",gCosRun)); //clm: Add cosmic file to chain | |
39 | pCosCh->SetBranchAddress("Digs",&pCosDigAll); //clm: Set digit branch address | |
40 | pCosCh->SetBranchAddress("Clus",&pCosCluAll); //clm: Set cluster branch address | |
41 | gMaxEvt=pCosCh->GetEntries()-1; //clm: Get number of events from the cosmic chain | |
42 | pAll->cd(7); TButton *pCosBtn=new TButton("Next Cosmic","ReadCosEvt()",0,0,0.3,0.1); pCosBtn->Draw(); //clm: define next button | |
43 | ReadCosEvt(); //clm: Read first cosmic event | |
44 | } | |
45 | else{ | |
46 | pAll->cd(7); TButton *pBtn=new TButton("Next","SimEvt()",0,0,0.2,0.1); pBtn->Draw(); | |
47 | SimEvt(); | |
48 | } | |
49 | } | |
50 | ||
51 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
52 | void ReadCosEvt() | |
53 | {// Read curent cosmic event and display it assumes that session is alredy opened | |
54 | if(gEvt>gMaxEvt) gEvt=0; if(gEvt<0) gEvt=gMaxEvt; //clm: set event limits | |
55 | pCosCh->GetEntry(gEvt); //clm: read event from chain | |
56 | DrawCosEvt(pCosDigAll,pCosCluAll); //clm: draw cosmic event | |
57 | gEvt++; | |
8282f9d0 | 58 | } |
59 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
60 | void ReadEvt() | |
61 | {// Read curent event and display it assumes that session is alredy opened | |
62 | TClonesArray hits("AliHMPIDHit"); | |
63 | if(gEvt>gMaxEvt) gEvt=0; if(gEvt<0) gEvt=gMaxEvt; | |
64 | ||
65 | gEsdTr->GetEntry(gEvt); gAL->GetEvent(gEvt); | |
d73ece6a | 66 | ReadHits(&hits); gHL->TreeS()->GetEntry(0); gHL->TreeD()->GetEntry(0); gHL->TreeR()->GetEntry(0); |
126b3e0e | 67 | |
8282f9d0 | 68 | DrawEvt(&hits,gH->DigLst(),gH->CluLst(),gEsd); |
69 | gEvt++; | |
70 | } | |
71 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
72 | void SimEvt() | |
73 | { | |
74 | TClonesArray hits("AliHMPIDHit"); | |
75 | TClonesArray sdig("AliHMPIDDigit"); | |
76 | TObjArray digs(7); for(Int_t i=0;i<7;i++) digs.AddAt(new TClonesArray("AliHMPIDDigit"),i); | |
77 | TObjArray clus(7); for(Int_t i=0;i<7;i++) clus.AddAt(new TClonesArray("AliHMPIDCluster"),i); | |
78 | AliESD esd; | |
27311693 | 79 | AliHMPIDDigit::fSigmas=4; |
80 | AliHMPIDDigitizer::DoNoise(kFALSE); | |
8282f9d0 | 81 | SimEsd(&esd); |
82 | SimHits(&esd,&hits); | |
83 | AliHMPIDv1::Hit2Sdi(&hits,&sdig); | |
84 | AliHMPIDDigitizer::Sdi2Dig(&sdig,&digs); | |
50e69536 | 85 | AliHMPIDReconstructor::Dig2Clu(&digs,&clus); |
bd73b83f | 86 | AliHMPIDTracker::Recon(&esd,&clus,pNmean); |
8282f9d0 | 87 | |
88 | pAll->cd(3); gPad->Clear(); TLatex txt;txt.DrawLatex(0.2,0.2,Form("Simulated event %i",gEvt)); | |
89 | DrawEvt(&hits,&digs,&clus,&esd); | |
90 | gEvt++; | |
91 | }//SimEvt() | |
a1d55ff3 | 92 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
93 | void SimEsd(AliESD *pEsd) | |
94 | { | |
95 | TParticle part; TLorentzVector mom; | |
50e69536 | 96 | for(Int_t iTrk=0;iTrk<100;iTrk++){//stack loop |
a1d55ff3 | 97 | part.SetPdgCode(kProton); |
50e69536 | 98 | part.SetProductionVertex(0,0,0,0); |
99 | Double_t eta= -0.2+gRandom->Rndm()*0.4; //rapidity is random [-0.2,+0.2] | |
100 | Double_t phi= gRandom->Rndm()*60.*TMath::DegToRad(); //phi is random [ 0 , 60 ] degrees | |
101 | mom.SetPtEtaPhiM(5,eta,phi,part.GetMass()); | |
a1d55ff3 | 102 | part.SetMomentum(mom); |
103 | AliESDtrack trk(&part); | |
104 | pEsd->AddTrack(&trk); | |
105 | }//stack loop | |
106 | }//EsdFromStack() | |
107 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
8282f9d0 | 108 | void SimHits(AliESD *pEsd, TClonesArray *pHits) |
a1d55ff3 | 109 | { |
50e69536 | 110 | const Int_t kCerenkov=50000050; |
111 | const Int_t kFeedback=50000051; | |
f3bae3e2 | 112 | |
a1d55ff3 | 113 | AliHMPIDRecon rec; |
f3bae3e2 | 114 | |
a591e55f | 115 | Int_t hc=0; |
a1d55ff3 | 116 | for(Int_t iTrk=0;iTrk<pEsd->GetNumberOfTracks();iTrk++){//tracks loop |
117 | AliESDtrack *pTrk=pEsd->GetTrack(iTrk); | |
118 | Float_t xRa,yRa; | |
119 | Int_t ch=AliHMPIDTracker::IntTrkCha(pTrk,xRa,yRa); | |
120 | if(ch<0) continue; //this track does not hit HMPID | |
50e69536 | 121 | Float_t beta = pTrk->GetP()/(TMath::Sqrt(pTrk->GetP()*pTrk->GetP()+0.938*0.938)); |
122 | Float_t ckov=TMath::ACos(1./(beta*1.292)); | |
a1d55ff3 | 123 | |
50e69536 | 124 | Float_t theta,phi,xPc,yPc,; |
125 | pTrk->GetHMPIDtrk(xPc,yPc,theta,phi); | |
126 | rec.SetTrack(xRa,yRa,theta,phi); | |
a1d55ff3 | 127 | |
8282f9d0 | 128 | if(!AliHMPIDDigit::IsInDead(xPc,yPc)) new((*pHits)[hc++]) AliHMPIDHit(ch,200e-9,kProton ,iTrk,xPc,yPc); //mip hit |
50e69536 | 129 | Int_t nPhots = (Int_t)(20.*TMath::Power(TMath::Sin(ckov),2)/TMath::Power(TMath::Sin(TMath::ACos(1./1.292)),2)); |
130 | for(int i=0;i<nPhots;i++){ | |
a591e55f | 131 | TVector2 pos; |
132 | pos=rec.TracePhot(ckov,gRandom->Rndm()*TMath::TwoPi()); | |
50e69536 | 133 | if(!AliHMPIDDigit::IsInDead(pos.X(),pos.Y())) new((*pHits)[hc++]) AliHMPIDHit(ch,7.5e-9,kCerenkov,iTrk,pos.X(),pos.Y()); |
a1d55ff3 | 134 | } //photon hits |
135 | }//tracks loop | |
8282f9d0 | 136 | }//SimHits() |
a1d55ff3 | 137 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
8282f9d0 | 138 | void ReadHits(TClonesArray *pHitLst) |
a1d55ff3 | 139 | { |
8282f9d0 | 140 | pHitLst->Delete(); Int_t cnt=0; |
141 | for(Int_t iEnt=0;iEnt<gHL->TreeH()->GetEntries();iEnt++){ //TreeH loop | |
142 | gHL->TreeH()->GetEntry(iEnt); //get current entry (prim) | |
143 | for(Int_t iHit=0;iHit<gH->Hits()->GetEntries();iHit++){ //hits loop | |
144 | AliHMPIDHit *pHit = (AliHMPIDHit*)gH->Hits()->At(iHit); //get current hit | |
145 | new((*pHitLst)[cnt++]) AliHMPIDHit(*pHit); | |
146 | }//hits loop for this entry | |
147 | }//tree entries loop | |
148 | ||
149 | }//ReadHits() | |
a1d55ff3 | 150 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
8282f9d0 | 151 | void DrawCh(Int_t iCh) |
a1d55ff3 | 152 | { |
153 | gPad->Range(-10,-10,AliHMPIDDigit::SizeAllX()+5,AliHMPIDDigit::SizeAllY()+5); | |
f3bae3e2 | 154 | if(iCh>=0){TLatex txt; txt.SetTextSize(0.1); txt.DrawLatex(-5,-5,Form("%i",iCh));} |
a1d55ff3 | 155 | |
156 | for(Int_t iPc=AliHMPIDDigit::kMinPc;iPc<=AliHMPIDDigit::kMaxPc;iPc++){ | |
157 | TBox *pBox=new TBox(AliHMPIDDigit::fMinPcX[iPc],AliHMPIDDigit::fMinPcY[iPc], | |
158 | AliHMPIDDigit::fMaxPcX[iPc],AliHMPIDDigit::fMaxPcY[iPc]); | |
159 | ||
8282f9d0 | 160 | pBox->SetFillStyle(0); |
a1d55ff3 | 161 | pBox->Draw(); |
162 | ||
a1d55ff3 | 163 | }//PC loop |
8282f9d0 | 164 | }//DrawCh() |
a1d55ff3 | 165 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
8282f9d0 | 166 | void DrawEvt(TClonesArray *pHitLst,TObjArray *pDigLst,TObjArray *pCluLst,AliESD *pEsd) |
a1d55ff3 | 167 | {//draws all the objects of current event in given canvas |
5582ed3a | 168 | |
169 | AliHMPIDParam *pParam=AliHMPIDParam::Instance(); | |
170 | ||
a1d55ff3 | 171 | AliHMPIDRecon rec; |
d73ece6a | 172 | TPolyMarker *pTxC[7], *pRin[7]; TMarker *pMip,*pCko,*pFee,*pDig,*pClu; |
173 | pMip=new TMarker; pMip->SetMarkerColor(kRed); pMip->SetMarkerStyle(kOpenTriangleUp); | |
174 | pCko=new TMarker; pCko->SetMarkerColor(kRed); pCko->SetMarkerStyle(kOpenCircle); | |
175 | pFee=new TMarker; pFee->SetMarkerColor(kRed); pFee->SetMarkerStyle(kOpenDiamond); | |
176 | pDig=new TMarker; pDig->SetMarkerColor(kGreen);pDig->SetMarkerStyle(kOpenSquare); | |
177 | pClu=new TMarker; pClu->SetMarkerColor(kBlue); pClu->SetMarkerStyle(kStar); | |
a1d55ff3 | 178 | for(Int_t ch=0;ch<7;ch++){ |
179 | pTxC[ch]=new TPolyMarker; pTxC[ch]->SetMarkerStyle(2); pTxC[ch]->SetMarkerColor(kRed); pTxC[ch]->SetMarkerSize(3); | |
180 | pRin[ch]=new TPolyMarker; pRin[ch]->SetMarkerStyle(6); pRin[ch]->SetMarkerColor(kMagenta); | |
181 | } | |
182 | ||
a1d55ff3 | 183 | for(Int_t iTrk=0;iTrk<pEsd->GetNumberOfTracks();iTrk++){//tracks loop to collect cerenkov rings and intersection points |
184 | AliESDtrack *pTrk=pEsd->GetTrack(iTrk); | |
185 | Int_t ch=pTrk->GetHMPIDcluIdx(); | |
186 | if(ch<0) continue; //this track does not hit HMPID | |
187 | ch/=1000000; | |
a591e55f | 188 | Float_t th,ph,xRad,yRad; pTrk->GetHMPIDtrk(xRad,yRad,th,ph);//get info on current track |
5582ed3a | 189 | // |
190 | //Find again intersection of track with PC--> it is not stored in ESD! | |
191 | // | |
192 | Float_t xPc=0,yPc=0; //track intersection point with PC | |
193 | Double_t pMom[3],nCh[3]; pTrk->GetPxPyPz(pMom);pParam->Norm(ch,nCh); pParam->Lors2Mars(ch,0,0,pMom,AliHMPIDParam::kPc); //point & norm for PC | |
194 | if(pTrk->Intersect(pMom,nCh,-AliHMPIDTracker::GetBz())==kTRUE){ //try to intersect track with PC | |
195 | pParam->Mars2Lors (ch,pMom,xPc,yPc); //TRKxPC position | |
196 | pTxC[ch]->SetNextPoint(xPc,yPc); | |
197 | } | |
198 | // end of point intersection @ PC | |
a1d55ff3 | 199 | Float_t ckov=pTrk->GetHMPIDsignal(); Float_t err=TMath::Sqrt(pTrk->GetHMPIDchi2()); |
a1d55ff3 | 200 | if(ckov>0){ |
5582ed3a | 201 | // Printf("theta %f phi %f ckov %f",th*TMath::RadToDeg(),ph*TMath::RadToDeg(),ckov); |
b4ad85e9 | 202 | rec.SetTrack(xRad,yRad,th,ph); |
a591e55f | 203 | for(Int_t j=0;j<100;j++){ |
204 | TVector2 pos; | |
205 | pos=rec.TracePhot(ckov,j*0.0628); | |
50e69536 | 206 | if(!AliHMPIDDigit::IsInDead(pos.X(),pos.Y())) pRin[ch]->SetNextPoint(pos.X(),pos.Y()); |
207 | } | |
a1d55ff3 | 208 | } |
209 | }//tracks loop | |
210 | ||
b08ebbb0 | 211 | Int_t totHit=pHitLst->GetEntriesFast(),totDig=0,totClu=0,totTxC=0; |
212 | Int_t totCkov=0, totFeed=0,totMip=0; | |
a1d55ff3 | 213 | for(Int_t iCh=0;iCh<7;iCh++){//chambers loop |
d73ece6a | 214 | totTxC+=pTxC[iCh]->GetN(); |
215 | totDig+=((TClonesArray*)pDigLst->At(iCh))->GetEntriesFast(); | |
216 | totClu+=((TClonesArray*)pCluLst->At(iCh))->GetEntriesFast(); | |
217 | ||
a1d55ff3 | 218 | switch(iCh){ |
8282f9d0 | 219 | case 6: pAll->cd(1); break; case 5: pAll->cd(2); break; |
220 | case 4: pAll->cd(4); break; case 3: pAll->cd(5); break; case 2: pAll->cd(6); break; | |
221 | case 1: pAll->cd(8); break; case 0: pAll->cd(9); break; | |
a1d55ff3 | 222 | } |
223 | gPad->SetEditable(kTRUE); gPad->Clear(); | |
8282f9d0 | 224 | DrawCh(iCh); |
d73ece6a | 225 | |
8c1bbb8a | 226 | ((TClonesArray*)pDigLst->At(iCh))->Draw(); //draw digits |
227 | ||
b08ebbb0 | 228 | totCkov=0;totFeed=0;totMip=0; |
8c1bbb8a | 229 | for(Int_t iHit=0;iHit<pHitLst->GetEntriesFast();iHit++){ // Draw hits |
a1d55ff3 | 230 | AliHMPIDHit *pHit=(AliHMPIDHit*)pHitLst->At(iHit); |
d73ece6a | 231 | if(pHit->Ch()==iCh) pHit->Draw(); |
b08ebbb0 | 232 | if(pHit->Pid()==50000050) totCkov++; |
233 | else if(pHit->Pid()==50000051) totFeed++; | |
234 | else totMip++; | |
d73ece6a | 235 | } |
236 | ||
8c1bbb8a | 237 | ((TClonesArray*)pCluLst->At(iCh))->Draw(); //draw clusters |
238 | pTxC[iCh]->Draw(); //draw intersections | |
239 | pRin[iCh]->Draw("CLP"); //draw rings | |
a1d55ff3 | 240 | gPad->SetEditable(kFALSE); |
241 | }//chambers loop | |
d73ece6a | 242 | |
243 | pAll->cd(3); gPad->Clear(); TLegend *pLeg=new TLegend(0.2,0.2,0.8,0.8); | |
244 | pLeg->SetHeader(Form("Event %i Total %i",gEvt,gMaxEvt+1)); | |
245 | pLeg->AddEntry(pTxC[0],Form("TRKxPC %i" ,totTxC),"p"); | |
b08ebbb0 | 246 | pLeg->AddEntry(pMip ,Form("Mip hits %i" ,totMip),"p"); |
247 | pLeg->AddEntry(pCko ,Form("Ckov hits %i" ,totCkov),"p"); | |
248 | pLeg->AddEntry(pFee ,Form("Feed hits %i" ,totFeed),"p"); | |
d73ece6a | 249 | pLeg->AddEntry(pDig ,Form("Digs %i" ,totDig),"p"); |
250 | pLeg->AddEntry(pClu ,Form("Clus %i" ,totClu),"p"); | |
251 | pLeg->Draw(); | |
a1d55ff3 | 252 | }//DrawEvt() |
8282f9d0 | 253 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
126b3e0e | 254 | void DrawCosEvt(TObjArray *pCosDigLst,TObjArray *pCosCluLst) //clm: new method to read and display cosmic events |
255 | {//draws all the objects of current event in given canvas | |
256 | TMarker *pDig,*pClu; | |
257 | pDig=new TMarker; pDig->SetMarkerColor(kGreen);pDig->SetMarkerStyle(kOpenSquare); | |
258 | pClu=new TMarker; pClu->SetMarkerColor(kBlue); pClu->SetMarkerStyle(kStar); | |
259 | ||
260 | ||
261 | Int_t totDig=0,totClu=0; | |
262 | for(Int_t iCh=0;iCh<7;iCh++){//chambers loop //clm: chambers loop is now not needed since iCh=0 but kept for provision | |
263 | totDig+=((TClonesArray*)pCosDigLst->At(iCh))->GetEntriesFast(); | |
264 | totClu+=((TClonesArray*)pCosCluLst->At(iCh))->GetEntriesFast(); | |
265 | ||
266 | switch(iCh){ | |
267 | case 6: pAll->cd(1); break; case 5: pAll->cd(2); break; | |
268 | case 4: pAll->cd(4); break; case 3: pAll->cd(5); break; case 2: pAll->cd(6); break; | |
269 | case 1: pAll->cd(8); break; case 0: pAll->cd(9); break; | |
270 | } | |
271 | gPad->SetEditable(kTRUE); gPad->Clear(); | |
272 | DrawCh(iCh); | |
273 | if(gCosRun < 500 && iCh == 6) { //clm: hard coded selection since raw data does not contain ch info which is set to 0 | |
274 | ((TClonesArray*)pCosDigLst->At(0))->Draw(); //draw digits | |
275 | ((TClonesArray*)pCosCluLst->At(0))->Draw(); //draw clusters | |
276 | } | |
277 | if (gCosRun >= 500 && iCh == 5) { | |
278 | ((TClonesArray*)pCosDigLst->At(0))->Draw(); //draw digits | |
279 | ((TClonesArray*)pCosCluLst->At(0))->Draw(); //draw clusters | |
280 | } | |
281 | ||
282 | gPad->SetEditable(kFALSE); | |
283 | }//chambers loop | |
284 | pAll->cd(3); gPad->Clear(); TLegend *pLeg=new TLegend(0.2,0.2,0.8,0.8); | |
285 | pLeg->SetHeader(Form("Cosmic Run %i Event %i Total %i",gCosRun,gEvt,gMaxEvt+1)); | |
286 | pLeg->AddEntry(pDig ,Form("Digs %i" ,totDig),"p"); | |
287 | pLeg->AddEntry(pClu ,Form("Clus %i" ,totClu),"p"); | |
288 | pLeg->Draw(); | |
289 | }//DrawCosEvt() | |
290 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
8282f9d0 | 291 | void DoZoom(Int_t evt, Int_t px, Int_t py, TObject *obj) |
a1d55ff3 | 292 | { |
8282f9d0 | 293 | if(evt!=5 && evt!=6) return; //5- zoom in 6-zoom out |
294 | const Int_t minZoom=64; | |
295 | const Int_t maxZoom=2; | |
296 | static Int_t zoom=minZoom; //zoom level | |
297 | if(evt==5&&zoom==maxZoom) return; | |
298 | if(evt==6&&zoom==minZoom) return; | |
299 | ||
d73ece6a | 300 | // if(!obj->IsA()->InheritsFrom("TPad")) return; //current object is not pad |
50e69536 | 301 | TVirtualPad *pPad=gPad->GetSelectedPad(); |
8282f9d0 | 302 | if(pPad->GetNumber()==3 || pPad->GetNumber()==7) return; //current pad is wrong |
303 | ||
304 | // Printf("evt=%i (%i,%i) %s",evt,px,py,obj->GetName()); | |
305 | ||
306 | Float_t x=pPad->AbsPixeltoX(px); Float_t y=pPad->AbsPixeltoY(py); | |
6ed6a312 | 307 | |
308 | if(evt==5){ zoom=zoom/2; pPad->Range(x-zoom*2,y-zoom*2,x+zoom*2,y+zoom*2);} //zoom in | |
309 | else { zoom=zoom*2; pPad->Range(x-zoom*2,y-zoom*2,x+zoom*2,y+zoom*2);} //zoom out | |
310 | if(zoom==minZoom) pPad->Range(-10,-10,AliHMPIDDigit::SizeAllX()+5,AliHMPIDDigit::SizeAllY()+5); | |
8282f9d0 | 311 | ((TCanvas *)gTQSender)->SetTitle(Form("zoom x%i",minZoom/zoom)); |
312 | pPad->Modified(); | |
313 | pPad->Update(); | |
a1d55ff3 | 314 | } |
8282f9d0 | 315 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
d73ece6a | 316 | void PrintHits() |
317 | { | |
318 | //Prints a list of HMPID hits for a given event. Default is event number 0. | |
319 | Printf("List of HMPID hits for event %i",gEvt); | |
320 | ||
321 | Int_t iTotHits=0; | |
322 | for(Int_t iPrim=0;iPrim<gHL->TreeH()->GetEntries();iPrim++){//prims loop | |
323 | gHL->TreeH()->GetEntry(iPrim); | |
324 | gH->Hits()->Print(); | |
325 | iTotHits+=gH->Hits()->GetEntries(); | |
326 | } | |
327 | Printf("totally %i hits for event %i",iTotHits,gEvt); | |
328 | } | |
329 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
330 | void PrintSdis() | |
331 | { | |
332 | //prints a list of HMPID sdigits for a given event | |
333 | Printf("List of HMPID sdigits for event %i",gEvt); | |
334 | gH->SdiLst()->Print(); | |
335 | Printf("totally %i sdigits for event %i",gH->SdiLst()->GetEntries(),gEvt); | |
336 | } | |
337 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
338 | void PrintDigs() | |
339 | { | |
340 | //prints a list of HMPID digits | |
341 | Printf("List of HMPID digits for event %i",gEvt); | |
342 | gH->DigLst()->Print(); | |
343 | Int_t totDigs=0; for(Int_t i=0;i<7;i++) {totDigs+=gH->DigLst(i)->GetEntries();} | |
344 | Printf("totally %i digits for event %i",totDigs,gEvt); | |
345 | } | |
346 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
347 | void PrintClus() | |
348 | {//prints a list of HMPID clusters for a given event | |
349 | Printf("List of HMPID clusters for event %i",gEvt); | |
350 | gH->CluLst()->Print(); | |
351 | ||
352 | Int_t iCluCnt=0; for(Int_t iCh=0;iCh<7;iCh++) iCluCnt+=gH->CluLst(iCh)->GetEntries(); | |
353 | ||
354 | Printf("totally %i clusters for event %i",iCluCnt,gEvt); | |
355 | } | |
50e69536 | 356 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
bd73b83f | 357 | void OpenCalib() |
50e69536 | 358 | { |
359 | AliCDBManager* pCDB = AliCDBManager::Instance(); | |
360 | pCDB->SetDefaultStorage("local://$HOME"); | |
361 | AliCDBEntry *pQthreEnt=pCDB->Get("HMPID/Calib/Qthre",0); | |
362 | AliCDBEntry *pNmeanEnt=pCDB->Get("HMPID/Calib/Nmean",0); | |
363 | ||
364 | if(!pQthreEnt || ! pNmeanEnt) return; | |
365 | ||
bd73b83f | 366 | pNmean=(TObjArray*)pNmeanEnt->GetObject(); |
50e69536 | 367 | } |