]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HMPID/Hmenu.C
add all histos
[u/mrichter/AliRoot.git] / HMPID / Hmenu.C
index df24aea3f3a2439afd4b735aecb768ec1107752d..45400bb561538618b5c4c79b677c39ca40ccccf4 100644 (file)
@@ -1,20 +1,10 @@
 AliRun     *a; AliRunLoader *al;   TGeoManager *g; //globals for easy manual manipulations
 AliHMPID   *h; AliLoader    *hl; AliHMPIDParam *hp;
-Bool_t isGeomType=kFALSE;
 
 Int_t nCurEvt=0;
 Int_t nMaxEvt=0;
 TControlBar *pMenu=0;
 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void GetParam()
-{
-  isGeomType=!isGeomType;
-  if(g) delete g;  if(hp) delete hp; //delete current TGeoManager and AliHMPIDParam
-  if(isGeomType) g=TGeoManager::Import("geometry.root");
-  else           g=TGeoManager::Import("misaligned_geometry.root");
-  hp=AliHMPIDParam::Instance();
-}//GetParam()
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 void Hmenu()
 {   
   TString status="Status: ";
@@ -32,7 +22,9 @@ void Hmenu()
     status+="PROBLEM PROBLEM PROBLEM no galice.root";
   
   status+=Form(" curent event %i",nCurEvt);
-  GetParam();
+
+  AliHMPIDParam::Instance();      // geometry loaded
+
   pMenu = new TControlBar("horizontal",status.Data(),0,0);
     pMenu->AddButton("                     ","","");
     pMenu->AddButton("       General       ","General()"  ,"general items which do not depend on any files");
@@ -115,7 +107,7 @@ void PrintMap()
  
   Double_t r2d=TMath::RadToDeg();
 
-  Double_t x=AliHMPIDDigit::SizeAllX(),y=AliHMPIDDigit::SizeAllY();
+  Double_t x=AliHMPIDParam::SizeAllX(),y=AliHMPIDParam::SizeAllY();
     
   Printf("\n\n\n");                                       
   
@@ -167,253 +159,8 @@ void PrintMap()
            ch,   pc,  px,   py,     ddl,   raw,      r,    d,    a); dd.Print(); 
   ddl=7;raw=0x592e000;r=22;d=4;a=46;ch=3;pc=1;
 }//PrintMap()
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void DrawSeg()
-{
-  TCanvas *pC=new TCanvas("seg","Segmentation as seen from electronics side");
-  DrawPc(1);
-  new TGedEditor(pC);
-  pC->ToggleEventStatus();
-  pC->SetEditable(0);
-  pC->AddExec("status","DrawStatus()");
-}
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void DrawStatus()
-{// Show info about current cursur position in status bar of the canvas
-//  Printf("event %i",gPad->GetEvent()); return;
-  TPad *pad=gPad;
-  TCanvas *pC=(TCanvas*)pad; 
-  TRootCanvas *pRC= (TRootCanvas*)pC->GetCanvasImp();
-  TGStatusBar *pBar=pRC->GetStatusBar();
-  pBar->SetParts(5);
-  Float_t x=pad->AbsPixeltoX(pad->GetEventX()); Float_t y=pad->AbsPixeltoY(pad->GetEventY());
-  if(AliHMPIDDigit::IsInDead(x,y))
-    pBar->SetText("Out of sensitive area",4);    
-  else{
-    Int_t pc,px,py,w32,ddl,r,d,a;  AliHMPIDDigit::Lors2Pad(x,y,pc,px,py); AliHMPIDDigit dig; dig.Set(1,pc,px,py); dig.Raw(w32,ddl,r,d,a);
-    pBar->SetText(Form("(pc%i,px%i,py%i) (r%i,d%i,a%i) (%.2f,%.2f)",
-                         pc  ,px  ,py,    r  ,d  ,a   ,dig.LorsX(),dig.LorsY()),4);
-  }    
-//  if(pad->GetEvent()==1){
-//    new TCanvas("zoom",Form("Row %i DILOGIC %i",dig.Row(),dig.Dilogic()));  
-//  }
-}//DrawStatus()
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void DrawPc(Bool_t isFill) 
-{ 
-  gPad->Range(-10,-10,AliHMPIDDigit::SizeAllX()+5,AliHMPIDDigit::SizeAllY()+5); 
-  
-    
-  Float_t dX2=0.5*AliHMPIDDigit::SizePadX(),
-          dY2=0.5*AliHMPIDDigit::SizePadY() ;
-  
-  TLatex txt; txt.SetTextSize(0.01);
-  TLine *pL;
-  
-  AliHMPIDDigit dig;   UInt_t w32; Int_t ddl,r,d,a;    
-  
-  for(Int_t iPc=AliHMPIDDigit::kMinPc;iPc<=AliHMPIDDigit::kMaxPc;iPc++){
-    TBox *pBox=new TBox(AliHMPIDDigit::fMinPcX[iPc],AliHMPIDDigit::fMinPcY[iPc],
-                        AliHMPIDDigit::fMaxPcX[iPc],AliHMPIDDigit::fMaxPcY[iPc]);
-    
-    if(iPc==0||iPc==2||iPc==4) pBox->SetFillColor(29);
-    else                       pBox->SetFillColor(41);
-    pBox->Draw();
-    
-    if(!isFill)  continue;
-    
-//    if(iPc%2) {dig.Set(0,iPc,79,25); txt.DrawText(dig.LorsX()+2,dig.LorsY(),Form("PC%i",dig.Pc()));}//print PC#    
-
-    txt.SetTextAlign(32);
-    for(Int_t iRow=0;iRow<8 ;iRow++){//draw row lines (horizontal)
-      dig.Set(0,iPc,0,iRow*6); dig.Raw(w32,ddl,r,d,a);  //set digit to the left-down pad of this row
-      
-      if(iPc%2) txt.DrawText(dig.LorsX()-1           ,dig.LorsY(),Form("%i",dig.PadPcY()));                  //print PadY#    
-                txt.DrawText(dig.LorsX()-1+(iPc%2)*67,dig.LorsY()+2,Form("r%i",r));                          //print Row#    
-      pL=new TLine(dig.LorsX()-dX2,dig.LorsY()-dY2,dig.LorsX()+AliHMPIDDigit::SizePcX()-dX2,dig.LorsY()-dY2);//draw horizontal line 
-      if(iRow!=0) pL->Draw(); 
-    }//row loop  
-    
-    txt.SetTextAlign(13);
-    for(Int_t iDil=0;iDil<10;iDil++){//draw dilogic lines (vertical)
-      dig.Set(0,iPc,iDil*8,0); dig.Raw(w32,ddl,r,d,a);       //set this digit to the left-down pad of this dilogic        
-      
-                           txt.DrawText(dig.LorsX()  ,dig.LorsY()-1,Form("%i",dig.PadPcX()));                 //print PadX# 
-      if(iPc==4 || iPc==5) txt.DrawText(dig.LorsX()+2,dig.LorsY()+42,Form("d%i",d));              //print Dilogic#    
-      pL=new TLine(dig.LorsX()-dX2,dig.LorsY()-dY2,dig.LorsX()-dX2,dig.LorsY()+AliHMPIDDigit::SizePcY()-dY2); //draw vertical line
-      if(iDil!=0)pL->Draw();
-    }//dilogic loop        
-  }//PC loop      
-}//DrawPc()
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void hed()
-{//event display from files
-  static TCanvas *pC=0;
-  static Int_t iEvt=0;
-  static Int_t iEvtTot=999;
-  static TFile *pEsdFl=0;
-  static TTree *pEsdTr=0;
-  static AliESD *pEsd=0;
-  
-  
-
-  
-  if(!pC&&iEvt<iEvtTot){
-    iEvt=0;
-    iEvtTot=999;
-    if(hl==0) {Printf("hed: no HMPID loader");return;}
-    Printf("Opening session");
-    pEsdFl=TFile::Open("AliESDs.root");     if(!pEsdFl || !pEsdFl->IsOpen()) return;//open AliESDs.root
-    pEsdTr=(TTree*) pEsdFl->Get("esdTree"); if(!pEsdTr)                      return;//get ESD tree
-    pEsdTr->SetBranchAddress("ESD", &pEsd);
-    hl->LoadHits(); hl->LoadDigits(); hl->LoadRecPoints();
-    iEvtTot=pEsdTr->GetEntries();
-    pC=new TCanvas("hed","View from electronics side, IP is behind the picture.",1000,900);  pC->ToggleEventStatus(); pC->Divide(3,3);
-    pC->cd(7); TButton *pBtn=new TButton("Next","hed()",0,0,0.2,0.1);   pBtn->Draw();
-    pC->cd(7); TButton *pBtn=new TButton("Quit","Close_hed()",0.2,0,0.4,0.1);   pBtn->Draw(); 
-    new TGedEditor(pC);
-  }
-  TLatex txt; txt.SetTextSize(0.1);
-  TClonesArray hits("AliHMPIDHit");
-      
-  if(iEvt<iEvtTot){
-    pEsdTr->GetEntry(iEvt); al->GetEvent(iEvt); 
-    hl->TreeD()->GetEntry(0); hl->TreeR()->GetEntry(0);
-    ReadHits(&hits); 
-     
-    pC->cd(3);  gPad->Clear(); txt.DrawLatex(0.2,0.2,Form("Event %i (total %i)",iEvt,iEvtTot));
-    DrawEvt(pC,&hits,h->DigLst(),h->CluLst(),pEsd);
-    
-    iEvt++;
-  }else{
-    Printf("--- No more events available...Bye.");
-    pC->Close();
-    pC=0x0;
-    iEvt=0;
-    iEvtTot=999;
-  }
-}//hed()
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void Close_hed()
-{
-  TCanvas *pC = ((TCanvas*)gROOT->FindObject("hed"));if(!pC) return;
-  pC->Close();
-  pC=0x0;
-}
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void ReadHits(TClonesArray *pHitLst)
-{
-  pHitLst->Delete();  Int_t cnt=0;
-  for(Int_t iEnt=0;iEnt<hl->TreeH()->GetEntries();iEnt++){       //TreeH loop
-    hl->TreeH()->GetEntry(iEnt);                                 //get current entry (prim)                
-    for(Int_t iHit=0;iHit<h->Hits()->GetEntries();iHit++){       //hits loop
-      AliHMPIDHit *pHit = (AliHMPIDHit*)h->Hits()->At(iHit);     //get current hit        
-      new((*pHitLst)[cnt++]) AliHMPIDHit(*pHit);
-    }//hits loop for this entry
-  }//tree entries loop
-  
-}//ReadHits()
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void sed()
-{
-
-  static TCanvas *pC1=0;
-  
-  if(!pC1){
-    pC1=new TCanvas("hed","Simulated evets-View from electronics side, IP is behind the picture.",1000,900); pC1->Divide(3,3);
-    pC1->cd(7); TButton *pBtn=new TButton("Next","sed()",0,0,0.2,0.1);   pBtn->Draw(); 
-  }
-
-
-  
-  AliHMPIDRecon rec;  
-
-  TClonesArray lh("AliHMPIDHit"); 
-  TClonesArray ls("AliHMPIDDigit"); 
-  TObjArray    ld(7); for(Int_t i=0;i<7;i++) ld.AddAt(new TClonesArray("AliHMPIDDigit"),i);
-  TObjArray    lc(7); for(Int_t i=0;i<7;i++) lc.AddAt(new TClonesArray("AliHMPIDCluster"),i);
-  AliESD esd;
-  
-  
-  SimEsd(&esd);
-  HitsFromEsd(&esd,&lh);
-  
-
 
-
-             AliHMPIDv1::Hit2Sdi(&lh,&ls);                               
-      AliHMPIDDigitizer::Sdi2Dig(&ls,&ld);     
-  AliHMPIDReconstructor::Dig2Clu(&ld,&lc);
-//        AliHMPIDTracker::Recon(&esd,&cl);
-  
-  DrawEvt(pC1,&lh,&ld,&lc,&esd);  
-}//SimEvt()
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void DrawEvt(TCanvas *pC,TClonesArray *pHitLst,TObjArray *pDigLst,TObjArray *pCluLst,AliESD *pEsd)
-{//draws all the objects of current event
-
-  AliHMPIDRecon rec;  
-  TPolyMarker *pTxC[7];  TPolyMarker *pRin[7]; //intesections and rings
-  for(Int_t ch=0;ch<7;ch++){
-    pTxC[ch]=new TPolyMarker; pTxC[ch]->SetMarkerStyle(2); pTxC[ch]->SetMarkerColor(kRed); pTxC[ch]->SetMarkerSize(3);
-    pRin[ch]=new TPolyMarker; pRin[ch]->SetMarkerStyle(6); pRin[ch]->SetMarkerColor(kMagenta);
-  }
-  
-  
-  for(Int_t iTrk=0;iTrk<pEsd->GetNumberOfTracks();iTrk++){//tracks loop to collect cerenkov rings and intersection points
-    AliESDtrack *pTrk=pEsd->GetTrack(iTrk);
-    Int_t ch=pTrk->GetHMPIDcluIdx();
-    if(ch<0) continue; //this track does not hit HMPID
-    ch/=1000000; 
-    Float_t th,ph,xPc,yPc; pTrk->GetHMPIDtrk(xPc,yPc,th,ph);  //get info on current track
-    pTxC[ch]->SetNextPoint(xPc,yPc);                          //add new intersection point
-    
-    Float_t ckov=pTrk->GetHMPIDsignal();  Float_t err=TMath::Sqrt(pTrk->GetHMPIDchi2());
-    
-    if(ckov>0){
-      rec.SetTrack(xPc,yPc,th,ph);
-     TVector2 pos;  for(int j=0;j<100;j++){rec.TracePhot(ckov,j*0.0628,pos); pRin[ch]->SetNextPoint(pos.X(),pos.Y());}      
-    }
-  }//tracks loop
-      
-  for(Int_t iCh=0;iCh<7;iCh++){//chambers loop    
-    switch(iCh){
-      case 6: pC->cd(1); break; case 5: pC->cd(2); break;
-      case 4: pC->cd(4); break; case 3: pC->cd(5); break; case 2: pC->cd(6); break;
-                                case 1: pC->cd(8); break; case 0: pC->cd(9); break;
-    }
-    gPad->SetEditable(kTRUE); gPad->Clear();
-    DrawPc(0);
-    for(Int_t iHit=0;iHit<pHitLst->GetEntries();iHit++){
-      AliHMPIDHit *pHit=(AliHMPIDHit*)pHitLst->At(iHit);
-      if(pHit->Ch()==iCh)        pHit->Draw();  //draw hits
-    }
-    ((TClonesArray*)pDigLst->At(iCh))->Draw();  //draw digits
-    ((TClonesArray*)pCluLst->At(iCh))->Draw();  //draw clusters
-                            pTxC[iCh]->Draw();  //draw intersections
-                            pRin[iCh]->Draw();  //draw rings
-    gPad->SetEditable(kFALSE);
-//    gPad->AddExec("zoom","DrawZoom()");
-  }//chambers loop
-  
-  
-//  TLatex txt; txt.SetTextSize(0.02);
-//  txt.DrawLatex(20,-5,Form("#theta=%.4f#pm%.5f with %2i #check{C}"          ,simCkov,simErr,simN));
-//  txt.DrawLatex(25,-5,Form("#theta=%.4f#pm%.5f with %2i #check{C}"          ,recCkov,recErr,recN));
-//  txt.DrawLatex(0 ,127,Form("#theta=%.2f#circ   #phi=%.2f#circ @(%.2f,%.2f) ",th*TMath::RadToDeg(),ph*TMath::RadToDeg(),radx,rady));
-//  Printf("DIG------DIG---------DIG--------DIG------DIG------DIG");pDigLst->Print();Printf("");                   
-}//DrawEvt()
 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void DrawZoom()
-{
-  TPad *pad=gPad;  Float_t x=gPad->AbsPixeltoX(pad->GetEventX()); Float_t y=gPad->AbsPixeltoY(pad->GetEventY());
-  TCanvas *zoom = (TCanvas*)gROOT->GetListOfCanvases()->FindObject("zoom");
-  if(!zoom) zoom=new TCanvas("zoom","");
-  zoom->SetTitle(Form("Zoom view around %.2f %.2f",x,y));
-  gPad->Range(x-20,y-20,x+20,y+20);
-  zoom->Update();
-}
 void t1(Int_t case=1)
 {
   AliHMPIDDigit *d[10]; for(Int_t i=0;i<10;i++) d[i]=new AliHMPIDDigit;
@@ -445,202 +192,6 @@ void t1(Int_t case=1)
   
   cl->Print();  
 }//t1()
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void SimEsd(AliESD *pEsd)
-{
-  TParticle part; TLorentzVector mom;
-  for(Int_t iTrk=0;iTrk<25;iTrk++){//stack loop
-    part.SetPdgCode(kProton);
-    part.SetProductionVertex(0,0,0,0);  
-    Double_t eta= -0.4+gRandom->Rndm()*0.8; //rapidity is random [-0.4,+0.4]
-    Double_t phi= gRandom->Rndm()*1.4;      //phi is random      [ 0  , 80 ] degrees    
-    mom.SetPtEtaPhiM(2,eta,phi,part.GetMass());
-    part.SetMomentum(mom);
-    AliESDtrack trk(&part);
-    pEsd->AddTrack(&trk);
-  }//stack loop  
-}//EsdFromStack()
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void EsdFromStack(AliESD *pEsd)
-{
-  al->LoadHeader();al->LoadKinematics();
-  AliStack *pStk=al->Stack();  
-  
-  for(Int_t iTrk=0;iTrk<pStk->GetNtrack();iTrk++){//stack loop
-    TParticle *pPart=pStk->Particle(iTrk);
-    if(pPart->GetPDG()->Charge()==0) continue; //neutral particles are not reconstructed
-    if(pPart->GetFirstMother()>0)    continue; //do not consider secondaries
-    AliESDtrack trk(pPart);
-    pEsd->AddTrack(&trk);
-  }//stack loop  
-}//EsdFromStack()
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void HitsFromEsd(AliESD *pEsd, TClonesArray *pHitLst)
-{
-  AliHMPIDRecon rec;
-  const Int_t kCerenkov=50000050,kFeedback=50000051;
-  Int_t hc=0; TVector2 pos;
-  for(Int_t iTrk=0;iTrk<pEsd->GetNumberOfTracks();iTrk++){//tracks loop
-    AliESDtrack *pTrk=pEsd->GetTrack(iTrk);
-    Float_t xRa,yRa;
-    Int_t ch=AliHMPIDTracker::IntTrkCha(pTrk,xRa,yRa);
-    if(ch<0) continue; //this track does not hit HMPID
-    Float_t ckov=0.63;
-
-    Float_t th,ph,xPc,yPc,; pTrk->GetHMPIDtrk(xPc,yPc,th,ph); rec.SetTrack(xRa,yRa,th,ph); 
-    
-    if(!AliHMPIDDigit::IsInDead(xPc,yPc)) new((*pHitLst)[hc++]) AliHMPIDHit(ch,200e-9,kProton  ,iTrk,xPc,yPc);                 //mip hit
-//    for(int i=0;i<4;i++)  new((*pHitLst)[hc++]) AliHMPIDHit(ch,7.5e-9,kFeedback,iTrk,gRandom->Rndm()*130,gRandom->Rndm()*126); //bkg hits 4 per track
-//    for(int i=0;i<16;i++){
-//      rec.TracePhot(ckov,gRandom->Rndm()*TMath::TwoPi(),pos);
-//                          new((*pHitLst)[hc++]) AliHMPIDHit(ch,7.5e-9,kCerenkov,iTrk,pos.X(),pos.Y());}                      //photon hits  
-  }//tracks loop    
-}//HitsFromEsd()
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void tst(Int_t nEvts=10000,Int_t type=999)
-{
-  
-  TLegend *lQ=new TLegend(0.5,0.5,0.9,0.9);
-
-  TH1F *hQ7  =new TH1F("hQ7"  ,"" ,300,-50,2000);     hQ7  ->SetLineColor(kRed);      lQ->AddEntry(hQ7  ,"Ckov 7 eV");  hQ7->SetStats(0);
-  TH1F *hQ200=new TH1F("hQ200","" ,300,-50,2000);     hQ200->SetLineColor(kBlack);    lQ->AddEntry(hQ200,"mip 200 eV");
-  TH1F *hQ500=new TH1F("hQ500","" ,300,-50,2000);     hQ500->SetLineColor(kCyan);     lQ->AddEntry(hQ500,"mip 500 eV");
-  TH1F *hQ900=new TH1F("hQ900","" ,300,-50,2000);     hQ900->SetLineColor(kGreen);    lQ->AddEntry(hQ900,"mip 900 eV");
-  
-  TH1F *hCluPerEvt=new TH1F("hCluPerEvt","# clusters per event",11,-0.5,10.5);
-  TH1F *hCluChi2  =new TH1F("hChi2","Chi2 ",1000,0,100);
-  TH1F *hCluFlg   =new TH1F("hCluFlg","Cluster flag",14,-1.5,12.5);                       hCluFlg->SetFillColor(5);
-  TH1F *hCluRawSize= new TH1F("hCluRawSize","Raw cluster size ",100,0,100);
-  
-  TH2F *pCluMapSi1=new TH2F("cluMSi1","Size 1 map",1700,-10,160,1700,-10,160);           
-  TH2F *pCluMapLo1=new TH2F("cluMLo1","Loc Max 1 map",1700,-10,160,1700,-10,160);        
-  TH2F *pCluMapEmp=new TH2F("cluMEmp","Should be empty",1700,-10,160,1700,-10,160);      
-  TH2F *pCluMapUnf=new TH2F("cluMUnf","Unfolded map",1700,-10,160,1700,-10,160);         
-  TH2F *pCluMapMax=new TH2F("cluMMax","Max Loc Max map",1700,-10,160,1700,-10,160);     
-  TH2F *pCluMapAbn=new TH2F("cluMAbn","Fit failed map",1700,-10,160,1700,-10,160);      
-  TH2F *pCluMapEdg=new TH2F("cluMEdg","On edge map",1700,-10,160,1700,-10,160);         
-  TH2F *pCluMapNoLoc=new TH2F("cluMNoLoc","No Loc  map",1700,-10,160,1700,-10,160);     
-  TH2F *pCluMapCoG=new TH2F("cluMCoG","CoG  map",1700,-10,160,1700,-10,160);            
-
-  TH1F *hHitCluDifX = new TH1F("hHitCluDifX" ,";entries;x_{Hit}-x_{Clu} [cm]"   ,2000,-2,2);          hHitCluDifX->Sumw2();    hHitCluDifX->SetFillColor(kYellow);
-  TH1F *hHitCluDifY = new TH1F("hHitCluDifY" ,";entries;y_{Hit}-y_{Clu} [cm]"   ,2000,-2,2);          hHitCluDifY->Sumw2();    hHitCluDifY->SetFillColor(kYellow);
-  TH2F *hHitCluDifXY= new TH2F("hHitCluDifXY",";x_{Hit}-x_{Clu};y_{Hit}-y_{Clu}",2000,-2,2,2000,-2,2);hHitCluDifXY->Sumw2();  
-  TH1F *hHitCluDifQ = new TH1F("hHitCluDifQ" ,";entries;Q_{Hit}-Q_{Clu}"        ,200 ,-100,100);      hHitCluDifQ->Sumw2();    hHitCluDifQ->SetFillColor(kYellow);
-  Float_t e200=200e-9,e500=500e-9,e900=900e-9,e7=7e-9;//predefined  Eloss
-  
-  AliHMPIDHit hit(0,0,kProton,0,0,0);
-  TClonesArray hits("AliHMPIDHit");  TClonesArray sdigs("AliHMPIDDigit");
-  TObjArray digs(7); for(Int_t i=0;i<7;i++) digs.AddAt(new TClonesArray("AliHMPIDDigit"),i);
-  TObjArray clus(7); for(Int_t i=0;i<7;i++) clus.AddAt(new TClonesArray("AliHMPIDCluster"),i);
-  
-    
-  for(Int_t iEvt=0;iEvt<nEvts;iEvt++){//events loop
-    Printf("============> iEvt = %d ",iEvt);
-    Int_t nHits=(type==999)?1:40;
-    Int_t ch,pid; Float_t e,hitx,hity,hitq;
-    for(Int_t iHit=0;iHit<nHits;iHit++){//hits loop for the current event
-      Printf("In loop");
-      switch(iHit){
-        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
-        case 1:  ch=0;pid=kProton;e=e200;hitx=0.4;hity=0.42;break; //mip in left-hand bottom coner of chamber 0
-        case 2:  ch=0;pid=kProton;e=e200;hitx=0.4;hity=30  ;break; //mip on left edge of chamber 0
-        case 3:  ch=0;pid=kProton;e=e200;hitx=40; hity=0.42;break; //mip on bottom edge of chamber 0
-        default: ch=gRandom->Rndm()*6; pid=(gRandom->Rndm()>0.9)? kProton:kCerenkov;
-                  if(pid==kProton) 
-                    e=gRandom->Rndm()*900e-9; 
-                  else
-                    e=5.5e-9+3e-9*gRandom->Rndm();
-                  x=gRandom->Rndm()*AliHMPIDDigit::SizeAllX(); y=gRandom->Rndm()*AliHMPIDDigit::SizeAllY();break; //random hit
-      }
-      new(hits[iHit]) AliHMPIDHit(ch,e,pid,iHit,hitx,hity);                          
-      hitq=e;
-      hQ200->Fill(hit.QdcTot(e200));
-      hQ500->Fill(hit.QdcTot(e500));
-      hQ900->Fill(hit.QdcTot(e900));
-      hQ7  ->Fill(hit.QdcTot(e7));
-    }//hits loop
-    
-    hits.Print();
-                
-    AliHMPIDv1::Hit2Sdi(&hits,&sdigs);
-    AliHMPIDDigitizer::Sdi2Dig(&sdigs,&digs);     
-    AliHMPIDReconstructor::Dig2Clu(&digs,&clus);
-          
-    for(Int_t iCh=AliHMPIDDigit::kMinCh;iCh<=AliHMPIDDigit::kMaxCh;iCh++){//chambers loop
-      TClonesArray *pDigs=(TClonesArray *)digs.UncheckedAt(iCh);
-      TClonesArray *pClus=(TClonesArray *)clus.UncheckedAt(iCh);
-        
-      hCluPerEvt->Fill(pClus->GetEntriesFast());
-      for(Int_t iClu=0;iClu<pClus->GetEntriesFast();iClu++){//clusters loop
-        AliHMPIDCluster *pClu=(AliHMPIDCluster*)pClus->UncheckedAt(iClu);
-        Float_t clux=pClu->X(); Float_t cluy=pClu->Y(); Float_t cluq=pClu->Q();
-        hCluFlg->Fill(pClu->Status());
-        hCluChi2->Fill(pClu->Chi2());
-        hCluRawSize->Fill(pClu->Size());
-        
-        switch(pClu->Status()){
-            case AliHMPIDCluster::kSi1:   pCluMapSi1->Fill(clux,cluy); break;
-            case AliHMPIDCluster::kLo1:   pCluMapLo1->Fill(clux,cluy); break;
-            case AliHMPIDCluster::kUnf:   pCluMapUnf->Fill(clux,cluy); break; 
-            case AliHMPIDCluster::kAbn:   pCluMapAbn->Fill(clux,cluy); break;
-            case AliHMPIDCluster::kMax:   pCluMapMax->Fill(clux,cluy); break;
-            case AliHMPIDCluster::kEdg:   pCluMapEdg->Fill(clux,cluy); break;
-            case AliHMPIDCluster::kCoG:   pCluMapCoG->Fill(clux,cluy); break;
-            case AliHMPIDCluster::kNoLoc: pCluMapNoLoc->Fill(clux,cluy); break;
-            default:     pCluMapEmp->Fill(clux,cluy); break;           
-        }
-        
-        hHitCluDifX->Fill(hitx-clux); hHitCluDifY->Fill(hity-cluy); hHitCluDifXY->Fill(hitx-clux,hity-cluy); hHitCluDifQ->Fill(hitq-cluq);
-        
-      }//clusters loop
-      
-    }//chambers loop
-      
-    hits.Delete();  sdigs.Delete();  for(int i = 0;i<7;i++){((TClonesArray*)digs.At(i))->Delete();((TClonesArray*)clus.At(i))->Delete();}
-  }//events loop      
-      
-  gStyle->SetPalette(1);
-  TCanvas *pC2=new TCanvas("Digit canvas","Digit canvas",1280,800); pC2->Divide(3,3);
-  pC2->cd(1);gPad->SetLogy(1);hHitCluDifX->Draw("hist");
-  pC2->cd(2);gPad->SetLogy(1);hHitCluDifY->Draw("hist");
-  pC2->cd(3);gPad->SetLogz(1);hHitCluDifXY->Draw("colz");
-  pC2->cd(4);gPad->SetLogy(1);hHitCluDifQ->Draw("hist");
-  pC2->cd(5);gPad->SetLogy(1);hCluFlg->Draw();
-  pC2->cd(6);gPad->SetLogy(1);hCluChi2->Draw();
-  pC2->cd(7);                 hCluRawSize->Draw();
-  pC2->cd(8);                 hCluPerEvt->Draw("colz");
-  pC2->cd(9);                 hQckov->Draw(); hQm200->Draw("same"); hQm500->Draw("same"); hQm900->Draw("same"); lQ->Draw();
-  TCanvas *pC1=new TCanvas("ClusterMaps","Cluster maps",1280,800); pC1->Divide(3,3);
-  pC1->cd(1);  pCluMapSi1->Draw();  DrawPc(kFALSE);
-  pC1->cd(2);  pCluMapLo1->Draw();  DrawPc(kFALSE);
-  pC1->cd(3);  pCluMapUnf->Draw();  DrawPc(kFALSE);
-  pC1->cd(4);  pCluMapAbn->Draw();  DrawPc(kFALSE);
-  pC1->cd(5);  pCluMapMax->Draw();  DrawPc(kFALSE);
-  pC1->cd(6);  pCluMapEdg->Draw(); DrawPc(kFALSE);
-  pC1->cd(7);  pCluMapCoG->Draw(); DrawPc(kFALSE);
-  pC1->cd(8);  pCluMapNoLoc->Draw();DrawPc(kFALSE);
-  pC1->cd(9);  pCluMapEmp->Draw(); DrawPc(kFALSE);
-   
-  pC1->SaveAs("$HOME/HitMaps.png");  //?????
-  pC2->SaveAs("$HOME/HitCluDif.gif");  
-  
-  Printf("Digits - raw -digits conversion...");  
-  
-  AliHMPIDDigit d1,d2; Int_t ddl,r,d,a;UInt_t w32;
-  for(Int_t iCh=AliHMPIDDigit::kMinCh;iCh<=AliHMPIDDigit::kMaxCh;iCh++)
-  for(Int_t iPc=AliHMPIDDigit::kMinPc;iPc<=AliHMPIDDigit::kMaxPc;iPc++)
-  for(Int_t iPx=AliHMPIDDigit::kMinPx;iPx<=AliHMPIDDigit::kMaxPx;iPx++)
-  for(Int_t iPy=AliHMPIDDigit::kMinPy;iPy<=AliHMPIDDigit::kMaxPy;iPy++){
-    d1.Set(iCh,iPc,iPx,iPy,3040);   //set digit               
-    d1.Raw(w32,ddl,r,d,a);          //get raw word for this digit 
-    d2.Raw(w32,ddl);                //set another digit from that raw word
-    if(d1.Compare(&d2)) {d1.Print(); d2.Print(); Printf("");}//compare them
-  }
-  Printf("OK");
-}//tst()
-
-
 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 void hp(Int_t iEvt=0)
 {
@@ -702,16 +253,3 @@ void cp(Int_t iEvt=0)
   Printf("totally %i clusters for event %i",iCluCnt,iEvt);
 }
 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void Gui()
-{
-  TGMainFrame   *pMF     =new TGMainFrame(gClient->GetRoot(),300,400);//main frame
-//1 level widgets: button and 2 horizontal frames  
-  TGedFrame *pGedF;
-  pMF->AddFrame(pGedF=new TGedFrame(pMF),new TGLayoutHints(kLHintsExpandY));
-  pMF->AddFrame(pDis1=new TGEmbeddedCanvas(pMF,kSunkenFrame));
-  
-  pMF->Layout();
-  pMF->MapSubwindows();
-  pMF->Resize(pMF->GetDefaultSize());
-  pMF->MapWindow();
-}