]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HMPID/Hdisp.C
Update timestamps for new AMANDA simulation (17/02/2015)
[u/mrichter/AliRoot.git] / HMPID / Hdisp.C
index 20a7cab61f838a941772c4e0e8ea367bc99b35a3..a7ec8e8d9f63af0f577dc27142cb1dfd1997e1bc 100644 (file)
@@ -144,8 +144,19 @@ void PrintSdis()
 void PrintDigs()
 {//prints a list of HMPID digits
   Printf("List of HMPID digits for event %i",fEvt);  
-  fDigLst->Print();
-  Int_t iTot=0;  for(Int_t i=0;i<7;i++) {iTot+=((TClonesArray*)fDigLst->At(i))->GetEntries();}
+//  fDigLst->Print();
+  
+  Int_t iTot=0;  
+  for(Int_t iCh=0;iCh<7;iCh++) {
+    iTot+=((TClonesArray*)fDigLst->At(iCh))->GetEntries();
+
+    TClonesArray *pDigCham=(TClonesArray*)fDigLst->At(iCh);         //get digs list for this chamber
+    for(Int_t iDig=0;iDig<pDigCham->GetEntries();iDig++){            //digs loop
+      AliHMPIDDigit *pDig = (AliHMPIDDigit*)pDigCham->At(iDig);
+      pDig->Print();
+    }//Digit loop
+  }//chamber loop 
+    
   Printf("totally %i digits for event %i",iTot,fEvt);
 }
 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -153,8 +164,16 @@ void PrintClus()
 {//prints a list of HMPID clusters  for a given event
   Printf("List of HMPID clusters for event %i",fEvt);
   
-  fCluLst->Print();
-  Int_t iTot=0; for(Int_t iCh=0;iCh<7;iCh++) iTot+=((TClonesArray*)fCluLst->At(iCh))->GetEntries();
+//  fCluLst->Print();
+  
+  Int_t iTot=0; for(Int_t iCh=0;iCh<7;iCh++) {
+    iTot+=((TClonesArray*)fCluLst->At(iCh))->GetEntries();
+    TClonesArray *pClusCham=(TClonesArray*)fCluLst->At(iCh);         //get clusters list for this chamber
+    for(Int_t iClu=0;iClu<pClusCham->GetEntries();iClu++){           //clusters loop
+      AliHMPIDCluster *pClu = (AliHMPIDCluster*)pClusCham->At(iClu); //get current cluster        
+      pClu->Print();
+    }
+  }
   
   Printf("totally %i clusters for event %i",iTot,fEvt);
 }
@@ -164,10 +183,28 @@ void PrintEsd()
   Printf("List of HMPID ESD summary for event %i",fEvt);
   for(Int_t iTrk=0;iTrk<fEsd->GetNumberOfTracks();iTrk++){
     AliESDtrack *pTrk = fEsd->GetTrack(iTrk);
+    
+    Double_t xout[3],pout[3];
+    
+    pTrk->GetOuterPxPyPz(pout);
+    Double_t pMomOut = TMath::Sqrt(pout[0]*pout[0]+pout[1]*pout[1]+pout[2]*pout[2]);
+    
     Float_t x,y;Int_t q,nacc;   pTrk->GetHMPIDmip(x,y,q,nacc);
-    Printf("Track %02i with phi %7.2f theta %7.2f p %7.2f with ThetaCer %5.3f with %i photons",iTrk,pTrk->Phi()*TMath::RadToDeg(),
-                                                                                                    pTrk->Theta()*TMath::RadToDeg(),
-                                                                                                   pTrk->GetP(),pTrk->GetHMPIDsignal(),nacc);
+    Float_t xra,yra,th,ph; pTrk->GetHMPIDtrk(xra,yra,th,ph);
+//    Printf("xra %f yra %f th %f phi %f",xra,yra,th,ph);
+    Int_t ch,idx,size;
+    Int_t word = pTrk->GetHMPIDcluIdx();
+    ch = word/1000000;
+    word = word%1000000;
+    size = word/1000;
+    idx = word%1000;
+    Double_t rout[3]; pTrk->GetOuterXYZ(rout);
+    vol = gGeoManager->FindNode(rout[0],rout[1],rout[2]);
+    Float_t thetaCkov = -999.;
+    if(pTrk->GetHMPIDsignal()<0) thetaCkov = pTrk->GetHMPIDsignal();
+    else                         thetaCkov = pTrk->GetHMPIDsignal() - (Int_t)pTrk->GetHMPIDsignal();
+    Printf("Trk %02i Ch.%2i (%5.2f,%5.2f) pOut %7.2f ThCer %7.3f phots %3i QMip %4i size %2i (idx %3i) in vol. %s",iTrk,ch,
+        xra,yra,pMomOut,thetaCkov,nacc,q,size,idx,vol->GetName());
   }  
 }//PrintEsd()
 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -294,8 +331,6 @@ void RenderHit(TClonesArray *pHitLst)
 void RenderDig(TObjArray *pDigLst)
 {//used by ReadEvent() to render digs to Tbox structures, one per chamber
 
-  Printf("RENDERDIG : event n. %i",fEvt);
-  
   for(Int_t iCh=0;iCh<=6;iCh++){                                    //chambers loop   
     TClonesArray *pDigCham=(TClonesArray*)pDigLst->At(iCh);         //get digs list for this chamber
     nDigs[iCh] = 0;
@@ -339,15 +374,20 @@ void RenderEsd(AliESDEvent *pEsd)
     AliESDtrack *pTrk=pEsd->GetTrack(iTrk);    Int_t ch=pTrk->GetHMPIDcluIdx(); //get track and chamber intersected by it
     ch/=1000000;
     Float_t xPc,yPc,xRa,yRa,thRa,phRa; 
-    pTrk->GetHMPIDtrk(xRa,yRa,thRa,phRa);;
+    pTrk->GetHMPIDtrk(xPc,yPc,thRa,phRa);;
+    
+    xRa = xPc - (fParam->RadThick()+fParam->WinThick()+fParam->GapThick())*TMath::Cos(phRa)*TMath::Tan(thRa); //just linear extrapolation back to RAD
+    yRa = yPc - (fParam->RadThick()+fParam->WinThick()+fParam->GapThick())*TMath::Sin(phRa)*TMath::Tan(thRa);
+    
     if(ch<AliHMPIDParam::AliHMPIDParam::kMinCh||ch>AliHMPIDParam::kMaxCh) continue;//this track does not intersect any chamber
     Int_t npTrk = fRenTxC[ch]->SetNextPoint(xRa,yRa);                           //add this intersection point
     Float_t ckov=pTrk->GetHMPIDsignal();                                        //get ckov angle stored for this track  
     if(ckov>0){
+      Float_t thetaCkov = pTrk->GetHMPIDsignal() - (Int_t)pTrk->GetHMPIDsignal();
       rec.SetTrack(xRa,yRa,thRa,phRa);
       fRenRin[ch]->SetUniqueID(npTrk);
       for(Int_t j=0;j<500;j++){
-        TVector2 pos; pos=rec.TracePhot(ckov,j*6.28/500.);
+        TVector2 pos; pos=rec.TracePhot(thetaCkov,j*6.28/500.);
        if(!AliHMPIDParam::IsInDead(pos.X(),pos.Y())) fRenRin[ch]->SetNextPoint(pos.X(),pos.Y());
       }      
     }//if ckov is valid
@@ -546,9 +586,10 @@ void DisplayInfo(Int_t evt,Int_t px, Int_t py)
     Double_t prob[5];
     pTrk->GetHMPIDpid(prob);
     if(ckov>0){
+      Float_t thetaCkov = pTrk->GetHMPIDsignal() - (Int_t)pTrk->GetHMPIDsignal();
       Float_t x,y;Int_t q,nacc;   pTrk->GetHMPIDmip(x,y,q,nacc);
       text3="";text3.Append(Form("Theta Cherenkov %5.3f with %i photons |  e %5.1f%% | u %5.1f%% | pi %5.1f%% | K %5.1f%% | p %5.1f%%",
-          pTrk->GetHMPIDsignal(),nacc,prob[0]*100,prob[1]*100,prob[2]*100,prob[3]*100,prob[4]*100));
+          thetaCkov,nacc,prob[0]*100,prob[1]*100,prob[2]*100,prob[3]*100,prob[4]*100));
     }      
   }
 //Update toolbar status  
@@ -563,8 +604,12 @@ void CloseInfo()
 void DoZoom(Int_t evt, Int_t px, Int_t py, TObject *)
 {
 //  Printf(" px %i py%i event %i",px,py,evt);
+  
+  if(evt== 1) evt = 5;  //for laptop with touchpad: zoom in with left button
+  if(evt== 2) evt = 6;  //for laptop with touchpad: zoom out with both buttons
+  
   if(evt==kMouseMotion||evt==kButton1Down) DisplayInfo(evt,px,py);
-  if(evt==11)  CloseInfo();
+//  if(evt==11)  CloseInfo();
   if(evt!=5 && evt!=6) return; //5- zoom in 6-zoom out
   const Int_t minZoom=64;
   const Int_t maxZoom=2;
@@ -607,7 +652,6 @@ void GetEvent()
 {
   ClearRenders();
   
-  Printf("get Event...... event n. %i",fEvt);
   ReadEvent();
   
   while(!Trigger()) {
@@ -876,7 +920,7 @@ void ReadEvent(){
   if(fNevt && fEvt>=fNevt) fEvt=0; //loop over max event
   if(fNevt && fEvt<0) fEvt=fNevt-1; //loop over max event
   
-  Printf("getting event %i out of %i",fEvt,fNevt);
+//  Printf("getting event %i out of %i",fEvt,fNevt);
   
   if(gDL) {