]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - RICH/AliRICHDisplFast.cxx
Forseen the possibility to have RICH reconstruction from Stack (useful for debug...
[u/mrichter/AliRoot.git] / RICH / AliRICHDisplFast.cxx
index b171449cb530a0e99f675173ce96c334b0d064c1..54a253f616cc269456e99a0297991eb22e52c91e 100644 (file)
 #include <TStyle.h>
 #include <TH2.h>
 #include <TMath.h>
+#include <TLatex.h>
 
 ClassImp(AliRICHDisplFast)
 
 //__________________________________________________________________________________________________
-void AliRICHDisplFast::Exec()
+void AliRICHDisplFast::Exec(Option_t *)
 {
-  TH2F *pHitsH2     = new TH2F("pHitsH2"  ,  "Event Display",165,-AliRICHParam::PcSizeX()/2,AliRICHParam::PcSizeX()/2,
-                                                             144,-AliRICHParam::PcSizeY()/2,AliRICHParam::PcSizeY()/2);
-  pHitsH2->SetStats(kFALSE);
-  TH2F *pDigitsH2   = new TH2F("pDigitsH2"  ,"Event Display",165,-AliRICHParam::PcSizeX()/2,AliRICHParam::PcSizeX()/2,
-                                                             144,-AliRICHParam::PcSizeY()/2,AliRICHParam::PcSizeY()/2);
-  TH2F *pClustersH2 = new TH2F("pClustersH2","Event Display",165,-AliRICHParam::PcSizeX()/2,AliRICHParam::PcSizeX()/2,
-                                                             144,-AliRICHParam::PcSizeY()/2,AliRICHParam::PcSizeY()/2);
-
+  AliRICH *pRich = (AliRICH*)gAlice->GetDetector("RICH");
+  Bool_t isHits    =!pRich->GetLoader()->LoadHits();
+  Bool_t isDigits  =!pRich->GetLoader()->LoadDigits();
+  Bool_t isClusters=!pRich->GetLoader()->LoadRecPoints();
+  
+  if(!isHits && !isDigits && !isClusters){Error("Exec","No hits digits and clusters. Nothing to display.");return;}
+  
   TCanvas *Display = new TCanvas("Display","RICH Display",0,0,600,600);
-    
   gStyle->SetPalette(1);
+  
+  TH2F *pHitsH2=0,*pDigitsH2=0,*pClustersH2=0;
+  
+  if(isHits)     pHitsH2     = new TH2F("pHitsH2"  ,  "Event Display;x,cm;y,cm",165,0,AliRICHParam::PcSizeX(),
+                                                                      144,0,AliRICHParam::PcSizeY());
+  if(pHitsH2)    pHitsH2->SetStats(kFALSE);
+  
+  if(isDigits)   pDigitsH2   = new TH2F("pDigitsH2"  ,"Event Display",165,0,AliRICHParam::PcSizeX(),
+                                                                      144,0,AliRICHParam::PcSizeY());
+  if(isClusters) pClustersH2 = new TH2F("pClustersH2","Event Display",165,0,AliRICHParam::PcSizeX(),
+                                                                      144,0,AliRICHParam::PcSizeY());
 
-  AliRICH *pRich = (AliRICH*)gAlice->GetDetector("RICH");
-  pRich->GetLoader()->LoadRecPoints();
-  pRich->GetLoader()->LoadDigits();
-  pRich->GetLoader()->LoadHits();
+    
+
+  
   for(Int_t iEventN=0;iEventN<gAlice->GetEventsPerRun();iEventN++){//events Loop
     pRich->GetLoader()->GetRunLoader()->GetEvent(iEventN);
-    pRich->GetLoader()->TreeD()->GetEntry(0);
-    pRich->GetLoader()->TreeR()->GetEntry(0);
 
   
     Int_t nPrimaries = (Int_t)pRich->GetLoader()->TreeH()->GetEntries();
@@ -60,144 +67,85 @@ void AliRICHDisplFast::Exec()
       for(Int_t k=0;k<nHits;k++)         Hits[i].Add(pRich->Hits()->At(k));
     
     }
-           
-    for(Int_t iChamber=1;iChamber<=7;iChamber++){//modules loop
-    
-     Int_t nDigits   = pRich->Digits(iChamber)->GetEntries();
-     Int_t nClusters = pRich->Clusters(iChamber)->GetEntries();
-   
-     pHitsH2->Reset();     pDigitsH2->Reset();     pClustersH2->Reset();
-
-
+//display all the staff on chamber by chamber basis           
+    for(Int_t iChamber=1;iChamber<=7;iChamber++){//chambers loop       
+      if(isHits)     pHitsH2    ->Reset();     
+      if(isDigits)   pDigitsH2  ->Reset();     
+      if(isClusters) pClustersH2->Reset();
+//deals with hits
       for(Int_t i=0;i<nPrimaries;i++){//prims loop
         pRich->GetLoader()->TreeH()->GetEntry(i);
         Int_t nHits = pRich->Hits()->GetEntries();
         for(Int_t j=0;j<nHits;j++){//hits loop
           AliRICHhit *pHit = (AliRICHhit*)Hits[i].At(j);
           if(pHit->C()==iChamber){
-            TVector3 xyzhit(pHit->X(),pHit->Y(),pHit->Z());
-            TVector2 hitlocal = pRich->C(iChamber)->Glob2Loc(xyzhit);
-            pHitsH2->Fill(hitlocal.X(),hitlocal.Y(),200);
+            TVector3 hitGlobX3= pHit->OutX3();
+            TVector2 hitLocX2 = pRich->C(iChamber)->Mrs2Pc(hitGlobX3);
+            pHitsH2->Fill(hitLocX2.X(),hitLocX2.Y(),200);
           }//if
         }//hits loop         
       }//prims loop
-     
-      for(Int_t j=0;j<nDigits;j++){//digits loop
-        AliRICHdigit *pDigit = (AliRICHdigit*)pRich->Digits(iChamber)->At(j);
-       TVector2 x2=AliRICHParam::Pad2Loc(pDigit->X(),pDigit->Y());
-       pDigitsH2->Fill(x2.X(),x2.Y(),100);
-      }//digits loop
-        
-      for(Int_t j=0;j<nClusters;j++){//clusters loop
-        AliRICHcluster *pCluster = (AliRICHcluster*)pRich->Clusters(iChamber)->At(j);
-        pClustersH2->Fill(pCluster->X(),pCluster->Y(),50);
-      }//clusters loop
-
-      pHitsH2->SetTitle(Form("event %i module %2i",iEventN,iChamber));
+      pHitsH2->SetTitle(Form("event %i chamber %2i",iEventN,iChamber));
       pHitsH2->SetMarkerColor(kRed); pHitsH2->SetMarkerStyle(29); pHitsH2->SetMarkerSize(0.4);
       pHitsH2->Draw();
       DrawSectors();
+      TLatex l; l.SetNDC(); l.SetTextSize(0.02);
+      if(!isHits)     {l.SetTextColor(kRed)  ;l.DrawLatex(0.1,0.01,"No Hits"    );}
+      if(!isDigits)   {l.SetTextColor(kGreen);l.DrawLatex(0.4,0.01,"No DIGITS"  );}
+      if(!isClusters) {l.SetTextColor(kBlue) ;l.DrawLatex(0.8,0.01,"No CLUSTERS");}
       Display->Update();
       Display->Modified();
-      getchar();
-             
-      pDigitsH2->SetMarkerColor(kGreen); pDigitsH2->SetMarkerStyle(29); pDigitsH2->SetMarkerSize(0.4);
-      pDigitsH2->Draw("same");
-      Display->Update();
-      Display->Modified();       
-      getchar();
-      
-      pClustersH2->SetMarkerColor(kBlue); pClustersH2->SetMarkerStyle(29);  pClustersH2->SetMarkerSize(0.4);
-      pClustersH2->Draw("same");
-      Display->Update();
-      Display->Modified();
-      getchar();
-     }//modules loop
+      gPad->WaitPrimitive();
+//deals with digits      
+      if(isDigits){
+        pRich->GetLoader()->TreeD()->GetEntry(0);
+        for(Int_t j=0;j<pRich->Digits(iChamber)->GetEntries();j++){//digits loop
+          AliRICHdigit *pDig = (AliRICHdigit*)pRich->Digits(iChamber)->At(j);
+         TVector2 x2=AliRICHParam::Pad2Loc(pDig->Pad());
+         pDigitsH2->Fill(x2.X(),x2.Y(),100);
+        }//digits loop
+        pDigitsH2->SetMarkerColor(kGreen); pDigitsH2->SetMarkerStyle(29); pDigitsH2->SetMarkerSize(0.4);
+        pDigitsH2->Draw("same");
+        Display->Update();
+        Display->Modified();       
+        gPad->WaitPrimitive();
+      }//if(isDigits)      
+//deals with clusters      
+      if(isClusters){
+        pRich->GetLoader()->TreeR()->GetEntry(0);
+        for(Int_t j=0;j<pRich->Clusters(iChamber)->GetEntries();j++){//clusters loop
+          AliRICHcluster *pClus = (AliRICHcluster*)pRich->Clusters(iChamber)->At(j);
+          pClustersH2->Fill(pClus->X(),pClus->Y(),50);
+        }//clusters loop
+        pClustersH2->SetMarkerColor(kBlue); pClustersH2->SetMarkerStyle(29);  pClustersH2->SetMarkerSize(0.4);
+        pClustersH2->Draw("same");
+        Display->Update();
+        Display->Modified();
+        gPad->WaitPrimitive();
+      }//if(isClusters)
+    }//chambers loop
     delete [] Hits;
-  }////events Loop
-  pRich->GetLoader()->UnloadRecPoints();
-  pRich->GetLoader()->UnloadDigits();
+  }//events Loop
   pRich->GetLoader()->UnloadHits();
+  if(isDigits)   pRich->GetLoader()->UnloadDigits();
+  if(isClusters) pRich->GetLoader()->UnloadRecPoints();
 }//Exec()
 //__________________________________________________________________________________________________
 void AliRICHDisplFast::DrawSectors() 
 { 
-  Double_t x1[5] = {-AliRICHParam::PcSizeX()/2,
-                    -AliRICHParam::SectorSizeX()/2-AliRICHParam::DeadZone(),
-                    -AliRICHParam::SectorSizeX()/2-AliRICHParam::DeadZone(),
-                    -AliRICHParam::PcSizeX()/2,
-                    -AliRICHParam::PcSizeX()/2};
-  Double_t y1[5] = {AliRICHParam::DeadZone()/2,
-                    AliRICHParam::DeadZone()/2,
-                    AliRICHParam::PcSizeY()/2,
-                    AliRICHParam::PcSizeY()/2,
-                    AliRICHParam::DeadZone()/2};  
-  Double_t x2[5] = {-AliRICHParam::SectorSizeX()/2,
-                     AliRICHParam::SectorSizeX()/2,
-                     AliRICHParam::SectorSizeX()/2,
-                    -AliRICHParam::SectorSizeX()/2,
-                    -AliRICHParam::SectorSizeX()/2};
-  Double_t y2[5] = {AliRICHParam::DeadZone()/2,
-                    AliRICHParam::DeadZone()/2,
-                    AliRICHParam::PcSizeY()/2,
-                    AliRICHParam::PcSizeY()/2,
-                    AliRICHParam::DeadZone()/2};
-  Double_t x3[5] = { AliRICHParam::SectorSizeX()/2+AliRICHParam::DeadZone(),
-                     AliRICHParam::PcSizeX()/2,
-                     AliRICHParam::PcSizeX()/2,
-                     AliRICHParam::SectorSizeX()/2+AliRICHParam::DeadZone(),
-                     AliRICHParam::SectorSizeX()/2+AliRICHParam::DeadZone()};
-  Double_t y3[5] = {AliRICHParam::DeadZone()/2,
-                    AliRICHParam::DeadZone()/2,
-                    AliRICHParam::PcSizeY()/2,
-                    AliRICHParam::PcSizeY()/2,
-                    AliRICHParam::DeadZone()/2};
-  Double_t x4[5] = {-AliRICHParam::PcSizeX()/2,
-                    -AliRICHParam::SectorSizeX()/2-AliRICHParam::DeadZone(),
-                    -AliRICHParam::SectorSizeX()/2-AliRICHParam::DeadZone(),
-                    -AliRICHParam::PcSizeX()/2,
-                    -AliRICHParam::PcSizeX()/2};
-  Double_t y4[5] = {-AliRICHParam::PcSizeY()/2,
-                    -AliRICHParam::PcSizeY()/2,
-                    -AliRICHParam::DeadZone()/2,
-                    -AliRICHParam::DeadZone()/2,
-                    -AliRICHParam::PcSizeY()/2};
-   Double_t x5[5] = {-AliRICHParam::SectorSizeX()/2,
-                     AliRICHParam::SectorSizeX()/2,
-                     AliRICHParam::SectorSizeX()/2,
-                    -AliRICHParam::SectorSizeX()/2,
-                    -AliRICHParam::SectorSizeX()/2};
-  Double_t y5[5] = {-AliRICHParam::PcSizeY()/2,
-                    -AliRICHParam::PcSizeY()/2,
-                    -AliRICHParam::DeadZone()/2,
-                    -AliRICHParam::DeadZone()/2,
-                    -AliRICHParam::PcSizeY()/2};
-  Double_t x6[5] = { AliRICHParam::SectorSizeX()/2+AliRICHParam::DeadZone(),
-                     AliRICHParam::PcSizeX()/2,
-                     AliRICHParam::PcSizeX()/2,
-                     AliRICHParam::SectorSizeX()/2+AliRICHParam::DeadZone(),
-                     AliRICHParam::SectorSizeX()/2+AliRICHParam::DeadZone()};
-  Double_t y6[5] = {-AliRICHParam::PcSizeY()/2,
-                    -AliRICHParam::PcSizeY()/2,
-                    -AliRICHParam::DeadZone()/2,
-                    -AliRICHParam::DeadZone()/2,
-                    -AliRICHParam::PcSizeY()/2};
-  TPolyLine *sector1 = new TPolyLine(5,x1,y1);
-  TPolyLine *sector2 = new TPolyLine(5,x2,y2);
-  TPolyLine *sector3 = new TPolyLine(5,x3,y3);
-  TPolyLine *sector4 = new TPolyLine(5,x4,y4);
-  TPolyLine *sector5 = new TPolyLine(5,x5,y5);
-  TPolyLine *sector6 = new TPolyLine(5,x6,y6);
-  sector1->SetLineColor(21);
-  sector2->SetLineColor(21);
-  sector3->SetLineColor(21);
-  sector4->SetLineColor(21);
-  sector5->SetLineColor(21);
-  sector6->SetLineColor(21);
-  sector1->Draw();
-  sector2->Draw();
-  sector3->Draw();
-  sector4->Draw();
-  sector5->Draw();
-  sector6->Draw();
-}
+  AliRICHParam p;
+  Double_t xLeft[5]  = {0,0,p.SectorSizeX(),p.SectorSizeX(),0};
+  Double_t xRight[5] = {p.SectorSizeX()+p.DeadZone(),p.SectorSizeX()+p.DeadZone(),p.PcSizeX(),p.PcSizeX(),p.SectorSizeX()+p.DeadZone()};
+  
+  Double_t yDown[5]   = {0,p.SectorSizeY(),p.SectorSizeY(),0,0};
+  Double_t yCenter[5] = {  p.SectorSizeY()+p.DeadZone(),2*p.SectorSizeY()+p.DeadZone(),2*p.SectorSizeY()+p.DeadZone(),
+                           p.SectorSizeY()+p.DeadZone(),p.SectorSizeY()+p.DeadZone()};  
+  Double_t yUp[5]     = {2*p.SectorSizeY()+2*p.DeadZone(),p.PcSizeY(),p.PcSizeY(),2*p.SectorSizeY()+2*p.DeadZone(),2*p.SectorSizeY()+2*p.DeadZone()};
+  
+  TPolyLine *sec1 = new TPolyLine(5,xLeft ,yDown);    sec1->SetLineColor(21);  sec1->Draw();
+  TPolyLine *sec2 = new TPolyLine(5,xRight,yDown);    sec2->SetLineColor(21);  sec2->Draw();
+  TPolyLine *sec3 = new TPolyLine(5,xLeft ,yCenter);  sec3->SetLineColor(21);  sec3->Draw();
+  TPolyLine *sec4 = new TPolyLine(5,xRight,yCenter);  sec4->SetLineColor(21);  sec4->Draw();
+  TPolyLine *sec5 = new TPolyLine(5,xLeft, yUp);      sec5->SetLineColor(21);  sec5->Draw();
+  TPolyLine *sec6 = new TPolyLine(5,xRight,yUp);      sec6->SetLineColor(21);  sec6->Draw();
+}//DrawSectors()