]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
remove ConfigRich, as fully substitueted by
authorkir <kir@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 18 Dec 2003 14:56:39 +0000 (14:56 +0000)
committerkir <kir@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 18 Dec 2003 14:56:39 +0000 (14:56 +0000)
CreateConfig.C

RICH/ConfigRich.C [deleted file]
RICH/CreateConfig.C
RICH/menu.C

diff --git a/RICH/ConfigRich.C b/RICH/ConfigRich.C
deleted file mode 100644 (file)
index 04ac028..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-const static Int_t   iRICH  =  3;//0-1-3
-const static Bool_t  IsRichUp=kFALSE;
-const static Int_t   kEventsPerFile=50;
-
-enum  EGenTypes {kGun0,kGun1,kGun7,kPP7,kPara};
-const static EGenTypes kGen=kPara;
-
-Int_t   iPIPE  =  0;//central before RICH
-Int_t   iITS   =  0;
-Int_t   iTPC   =  0;
-Int_t   iTRD   =  0;
-Int_t   iTOF   =  0;
-Int_t   iFRAME =  0;
-
-Int_t   iMAG   =  0;//central after RICH
-Int_t   iCRT   =  0;
-Int_t   iHALL  =  0;
-
-Int_t   iPHOS  =  0;
-
-Int_t   iSTART =  0;//forward
-Int_t   iFMD   =  0;
-Int_t   iSHIL  =  0;
-Int_t   iABSO  =  1;
-Int_t   iPMD   =  0;
-Int_t   iDIPO  =  0;
-Int_t   iEMCAL =  0;
-Int_t   iVZERO =  0;
-Int_t   iMUON  =  0;
-Int_t   iZDC   =  0;
-
-AliRICH *gRICH;
-
-void Config()
-{   
-  ::Info("kir","Start RICH VERSION %i debug %i",iRICH,gAlice->GetDebug());
-  
-  int n,pid,chamber;
-  double p;
-  Geant3(); File(); Decayer(); Field(); Other();
-  
-
-  if(IsRichUp) AliRICHParam::AngleRot(0); 
-  AliRICH *pRICH;
-  switch(iRICH){
-    case 0:
-      gRICH=new AliRICHv0("RICH","coarse RICH for material budget");
-      break;
-    case 1:
-      gRICH=new AliRICHv1("RICH","detailed RICH for full simulation");
-      break;
-    case 3:
-      gRICH=new AliRICHv3("RICH","old parametrised RICH with rotation");
-      break;
-  }   
-  switch(kGen){
-       case kPP7:          Pythia7(pid=kPiPlus,p=4);                break;
-        case kGun7:         Gun7(pid=kProton);                       break;
-        case kGun1:         Gun1(n=1,pid=kPiPlus,p=4,chamber=4);     break;
-        case kGun0:         Gun1(n=1,pid=kNeutron,p=4,chamber=4);    break;
-        case kPara:         Para();                                  break;
-        default:            Fatal("Config","No generator");          break;
-  }  
-  ::Info("kir","Stop.");
-}//void Config()
-
-void Gun1(Int_t iNprim,Int_t iPID,Double_t p,Int_t iChamber)
-{
-  Double_t theta=gRICH->C(iChamber)->ThetaD();
-  Double_t phi  =gRICH->C(iChamber)->PhiD();
-  theta-=2;
-  ::Info("kir-Gun1","%i primarie(s) of %i PID  with p=%f GeV at (%f,%f)",iNprim,iPID,p,theta,phi);
-   
-  AliGenFixed *pGen=new AliGenFixed(iNprim);
-  pGen->SetMomentum(p);
-  pGen->SetPhiRange(phi);
-  pGen->SetThetaRange(theta);
-  pGen->SetOrigin(0,0,0);                 
-  pGen->SetPart(iPID);    
-  pGen->Init();
-}//Gun()     
-
-void Para()
-{
-  Int_t iNprim=85700;
-  ::Info("kir-Para","%i primaries",iNprim);
-   
-  AliGenHIJINGpara *pGen=new AliGenHIJINGpara(iNprim);
-  pGen->SetMomentumRange(0,999);                      //GeV
-  pGen->SetPhiRange(0,360);                           //degree
-  pGen->SetThetaRange(Eta2Theta(8),Eta2Theta(-8));    //degree  
-  pGen->SetOrigin(0,0,0);                             //IP, cm 
-  pGen->SetSigma(0,0,0);                              //IP sigma, cm
-  pGen->Init();
-}
-
-
-void Gun7(Int_t iPID)
-{
-  ::Info("kir-Gun7","7 primaries of %i PID  with 1.5 < p < 4.5 GeV/c",iPID);
-  AliGenCocktail *pCocktail=new AliGenCocktail();
-  for(int i=1;i<=7;i++){
-    AliGenFixed *pFixed=new AliGenFixed(1);
-    pFixed->SetMomentum(1.5+(i-1)*0.5);
-    pFixed->SetPhiRange(gRICH->C(i)->PhiD()+3);
-    pFixed->SetThetaRange(gRICH->C(i)->ThetaD()+2);
-    pFixed->SetOrigin(0,0,0);                 
-    pFixed->SetPart(iPID);    
-    pCocktail->AddGenerator(pFixed,Form("Fixed %i",i),1);
-  }
-  pCocktail->Init();
-}
-
-void Pythia7(Int_t iPID,Double_t p)
-{
-  ::Info("kir-Pythia","7 primaries of %i PID  with p=%f GeV plus Pythia",iPID,p);
-  AliGenCocktail *pCocktail=new AliGenCocktail();
-  for(int i=1;i<=7;i++){
-    AliGenFixed *pFixed=new AliGenFixed(1);
-    pFixed->SetMomentum(p);
-    pFixed->SetPhiRange(gRICH->C(i)->PhiD());
-    pFixed->SetThetaRange(gRICH->C(i)->ThetaD()+2);
-    pFixed->SetOrigin(0,0,0);                 
-    pFixed->SetPart(iPID);    
-    pCocktail->AddGenerator(pFixed,Form("Fixed %i",i),1);
-  }
-  
-  AliGenPythia *pPythia = new AliGenPythia(-1);
-  pPythia->SetMomentumRange(0,999999);
-  pPythia->SetPhiRange(0,360);
-  pPythia->SetThetaRange(0., 180.);
-  pPythia->SetYRange(-12,12);
-  pPythia->SetPtRange(0,1000);
-  pPythia->SetStrucFunc(kCTEQ4L);
-  pPythia->SetProcess(kPyMb);
-  pPythia->SetEnergyCMS(14000.);  
-    
-  pCocktail->AddGenerator(pPythia,"Pythia",1);  
-  pCocktail->Init();
-}
-
-
-
-void Scan()
-{
-}
-
-
-void File()
-{
-  ::Info("kir-File","Create galice.root, %i events per file",kEventsPerFile);
-
-  AliRunLoader *pRL = AliRunLoader::Open("galice.root",AliConfig::fgkDefaultEventFolderName,"recreate");
-  if(!pRL)
-    Fatal("my/AliceConfig.C::File","Can not instatiate the Run Loader");
-  
-  pRL->SetCompressionLevel(2);
-  pRL->SetNumberOfEventsPerFile(kEventsPerFile);
-  gAlice->SetRunLoader(pRL);
-}
-
-void Geant3()
-{
-  ::Info("kir-Geant3","Initialize the actual MC code.");
-
-  gSystem->Load("libgeant321.so");   
-  new TGeant3("C++ Interface to Geant");
-}//void Geant3()
-
-void Decayer()
-{
-  ::Info("kir-Decayer","Initialise external decayer.");
-  TVirtualMCDecayer *pDecayer = new AliDecayerPythia();
-  pDecayer->SetForceDecay(kAll);
-  pDecayer->Init();
-  gMC->SetExternalDecayer(pDecayer);
-
-  gMC->SetProcess("DCAY",1);
-  gMC->SetProcess("PAIR",1);
-  gMC->SetProcess("COMP",1);
-  gMC->SetProcess("PHOT",1);
-  gMC->SetProcess("PFIS",0);
-  gMC->SetProcess("DRAY",0);
-  gMC->SetProcess("ANNI",1);
-  gMC->SetProcess("BREM",1);
-  gMC->SetProcess("MUNU",1);
-  gMC->SetProcess("CKOV",1);
-  gMC->SetProcess("HADR",1);
-  gMC->SetProcess("LOSS",2);
-  gMC->SetProcess("MULS",1);
-  gMC->SetProcess("RAYL",1);
-
-  Float_t cut = 1.e-3;        // 1MeV cut by default
-  Float_t tofmax = 1.e10;
-
-  gMC->SetCut("CUTGAM", cut);
-  gMC->SetCut("CUTELE", cut);
-  gMC->SetCut("CUTNEU", cut);
-  gMC->SetCut("CUTHAD", cut);
-  gMC->SetCut("CUTMUO", cut);
-  gMC->SetCut("BCUTE",  cut);
-  gMC->SetCut("BCUTM",  cut);
-  gMC->SetCut("DCUTE",  cut);
-  gMC->SetCut("DCUTM",  cut);
-  gMC->SetCut("PPCUTM", cut);
-  gMC->SetCut("TOFMAX", tofmax);
-}
-
-void Field()
-{
-  ::Info("kir-Field","Set default magnetic field L3 0.4T.");
-  //AliMagFMaps* pField = new AliMagFMaps("Maps","Maps", 2, 1., 10., 1);
-  gAlice->SetField();
-}
-
-void Other()
-{
-  ::Info("kir-Other","Init all other detectors");
-  AliBODY *BODY = new AliBODY("BODY", "Alice envelop");
-
-  if(iMAG){
-    new AliMAG("MAG", "Magnet");
-  }
-
-  if(iABSO){
-    new AliABSOv0("ABSO", "Muon Absorber");
-  }
-
-  if(iDIPO){
-    new AliDIPOv2("DIPO", "Dipole version 2");
-  }
-
-  if(iHALL){
-    new AliHALL("HALL", "Alice Hall");
-  }
-
-  if(iFRAME){
-    AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame");
-    FRAME->SetHoles(1);
-  }
-
-  if(iSHIL){
-    new AliSHILv2("SHIL", "Shielding Version 2");
-  }
-
-  if(iPIPE){
-    AliPIPEv0("PIPE", "Beam Pipe");
-  }
-  if(iITS){
-    AliITSvPPRasymm *ITS  = new AliITSvPPRasymm("ITS","New ITS PPR detailed version with asymmetric services");
-    ITS->SetMinorVersion(2);       // don't touch this parameter if you're not an ITS developer
-    ITS->SetReadDet(kFALSE);       // don't touch this parameter if you're not an ITS developer
-    ITS->SetThicknessDet1(200.);   // detector thickness on layer 1 must be in the range [100,300]
-    ITS->SetThicknessDet2(200.);   // detector thickness on layer 2 must be in the range [100,300]
-    ITS->SetThicknessChip1(200.);  // chip thickness on layer 1 must be in the range [150,300]
-    ITS->SetThicknessChip2(200.);  // chip thickness on layer 2 must be in the range [150,300]
-    ITS->SetRails(0);              // 1 --> rails in ; 0 --> rails out
-    ITS->SetCoolingFluid(1);       // 1 --> water ; 0 --> freon
-    ITS->SetEUCLID(0);  
-  }
-
-  if(iTPC){
-    AliTPC *TPC = new AliTPCv2("TPC", "Default");
-    TPC->SetSecAU(-1);
-    TPC->SetSecAL(-1);
-  }
-  
-  if(iTOF){
-    new AliTOFv2FHoles("TOF", "TOF with Holes");
-  }
-  
-  if(iZDC){
-    new AliZDCv2("ZDC", "normal ZDC");
-  }
-
-  if(iTRD){
-    AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator");
-    TRD->SetGasMix(1);
-    TRD->SetPHOShole();
-    TRD->SetRICHhole();
-    AliTRDsim *TRDsim = TRD->CreateTR();
-  }
-
-  if(iFMD){
-    AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
-    FMD->SetRingsSi1(256);
-    FMD->SetRingsSi2(128);
-    FMD->SetSectorsSi1(20);
-    FMD->SetSectorsSi2(40);      
-  }
-
-  if(iMUON){
-    new AliMUONv1("MUON", "default");
-  }
-  if(iPHOS){
-    new AliPHOSv1("PHOS", "IHEP");
-  }
-
-  if(iPMD){
-    new AliPMDv1("PMD", "normal PMD");
-  }
-
-  if(iSTART){
-    new AliSTARTv1("START", "START Detector");
-  }
-
-  if(iEMCAL){
-    new AliEMCALv1("EMCAL", "EMCALArch1a");
-  }
-
-  if(iCRT){
-    new AliCRTv0("CRT", "normal ACORDE");
-  }
-
-  if(iVZERO){
-    new AliVZEROv2("VZERO", "normal VZERO");
-  }
-  
-  ::Info("kir-Other","Stop.");
-}//Other()
-
-Float_t Eta2Theta(Float_t arg)
-{
-  return (180./TMath::Pi())*2.*atan(exp(-arg));
-}
-
index ba9cb347f74ed09bda25a804051977795c255565..cf083db344bc32affd8dfb4b53ff1d95f76f6e42 100644 (file)
@@ -6,16 +6,18 @@ public:
                    kPMD=8192,kDIPO=16384,kEMCAL=32768,kVZERO=65536,kMUON=131072,kZDC=262144,kSHILD=524288};
   enum EProcesses {kDCAY=1,kPAIR=2,kCOMP=4,kPHOT=8,kPFIS=16,kDRAY=32,kANNI=64,kBREM=128,kMUNU=256,kCKOV=512,kHADR=1024,kLOSS=2048,kMULS=4096,
                    kRAYL=8192};
-  enum EGenTypes  {kGun1,kGun7,kHijing,kHijingPara};
-      KirConfig();
-     ~KirConfig()    {Info("ctor","");fMain->CleanUp(); delete fMain;}
-  void   AddDetector(Int_t id)          {fDetectors+=id;}
-  void   RemoveDetector(Int_t id)       {fDetectors-=id;}
-  void   AddProcess(Int_t id)           {fProcesses+=id;}
-  void   RemoveProcess(Int_t id)        {fProcesses-=id;}
-  Bool_t IsDetectorOn(Int_t id)    const{return fDetectors&id;}
-  Bool_t IsProcessOn(Int_t id)     const{return fProcesses&id;}
-  void   CreateConfigFile();
+  enum EGenTypes  {kGun1,kGun7,kPythia7,kHijing,kHijingPara};
+  
+          KirConfig(const char*sFileName);
+         ~KirConfig()                    {Info("ctor","");fMain->Cleanup(); delete fMain;}
+  void    AddDetector(Int_t id)          {fDetectors+=id;}
+  void    RemoveDetector(Int_t id)       {fDetectors-=id;}
+  void    AddProcess(Int_t id)           {fProcesses+=id;}
+  void    RemoveProcess(Int_t id)        {fProcesses-=id;}
+  Bool_t  IsDetectorOn(Int_t id)    const{return fDetectors&id;}
+  Bool_t  IsProcessOn(Int_t id)     const{return fProcesses&id;}
+  Float_t Eta2Theta(Float_t arg)    const{return (180./TMath::Pi())*2.*TMath::ATan(TMath::Exp(-arg));}
+  void    CreateConfigFile();
 protected:
   TGMainFrame  *fMain;//main window poiter
   TGComboBox   *fRichVersionCombo;
@@ -23,11 +25,12 @@ protected:
   TGComboBox   *fGenTypeCombo,*fPartIdCombo,*fMomCombo;
   Int_t         fDetectors;
   Int_t         fProcesses;
+  char         *fFileName;
 };//class KirConfig
         
-
-KirConfig::KirConfig()
+KirConfig::KirConfig(const char *sFileName)
 {   
+  fFileName=sFileName;
 // Create main frame       
   fMain=new TGMainFrame(gClient->GetRoot(),500,400);
 //  fMain->Connect("CloseWindow()","KirConfig",this,"CloseWindow()");   
@@ -36,19 +39,15 @@ KirConfig::KirConfig()
   pHorFrame->AddFrame(pVerFrame=new TGVerticalFrame(pHorFrame,100,200));  
   pVerFrame->AddFrame(pRichGrpFrm=new TGGroupFrame(pHorFrame,"RICH"));
   pRichGrpFrm->AddFrame(fRichVersionCombo=new TGComboBox(pRichGrpFrm,100));
-  fRichVersionCombo->AddEntry("version 0",0);
-  fRichVersionCombo->AddEntry("version 1",1);
-  fRichVersionCombo->AddEntry("version 3",3);
-  fRichVersionCombo->Select(3);
-  fRichVersionCombo->Resize(140,20);
+  fRichVersionCombo->AddEntry("version 0",0);  fRichVersionCombo->AddEntry("version 1",1);  fRichVersionCombo->AddEntry("version 3",3);
+  fRichVersionCombo->Select(1);  fRichVersionCombo->Resize(140,20);
   pRichGrpFrm->AddFrame(fRichTopChkBtn=new TGCheckButton(pRichGrpFrm,"Rotate to Top?"));
 //Generator  
   pVerFrame->AddFrame(pGenGrpFrm=new TGGroupFrame(pHorFrame,"Generator"));
   pGenGrpFrm->AddFrame(fGenTypeCombo=new TGComboBox(pGenGrpFrm,100));
-  fGenTypeCombo->AddEntry("gun to central chamber",kGun1);
-  fGenTypeCombo->AddEntry("gun to all chambers",kGun7);
-  fGenTypeCombo->AddEntry("HIJING",kHijing);
-  fGenTypeCombo->AddEntry("parametrized HIJING",kHijingPara);
+  fGenTypeCombo->AddEntry("gun to central chamber",kGun1);  fGenTypeCombo->AddEntry("gun to all chambers",kGun7);
+  fGenTypeCombo->AddEntry("7 guns on top of Pythia",kPythia7);
+  fGenTypeCombo->AddEntry("HIJING",kHijing);                fGenTypeCombo->AddEntry("parametrized HIJING",kHijingPara);
   fGenTypeCombo->Select(kGun1);
   fGenTypeCombo->Resize(160,20);
   
@@ -74,8 +73,8 @@ KirConfig::KirConfig()
   fMomCombo->Resize(160,20);
 // Magnetic Field
   pVerFrame->AddFrame(pFldGrpFrm=new TGGroupFrame(pHorFrame,"Magnetic Field"));
-  pFldGrpFrm->AddFrame(fMagFldChkBtn=new TGCheckButton(pFldGrpFrm,"On/Off?"));
-  fMagFldChkBtn->SetState(kButtonDown);
+  pFldGrpFrm->AddFrame(fMagFldChkBtn=new TGCheckButton(pFldGrpFrm,"On/Off"));
+  fMagFldChkBtn->SetState(kButtonUp);
 //Detectors
   pHorFrame->AddFrame(pDetButGrp=new TGButtonGroup(pHorFrame,"Detectors"));
   pDetButGrp->Connect("Pressed(Int_t)","KirConfig",this,"AddDetector(Int_t)");
@@ -104,24 +103,25 @@ KirConfig::KirConfig()
   pHorFrame->AddFrame(pProcButGrp=new TGButtonGroup(pHorFrame,"Processes"));
   pProcButGrp->Connect("Pressed(Int_t)","KirConfig",this,"AddProcess(Int_t)");
   pProcButGrp->Connect("Released(Int_t)","KirConfig",this,"RemoveProcess(Int_t)");
-  new TGCheckButton(pProcButGrp,"DCAY",kDCAY));  pProcButGrp->SetButton(kDCAY);       
-  new TGCheckButton(pProcButGrp,"PAIR",kPAIR));  pProcButGrp->SetButton(kPAIR);       
-  new TGCheckButton(pProcButGrp,"COMP",kCOMP));  pProcButGrp->SetButton(kCOMP);
+  new TGCheckButton(pProcButGrp,"DCAY decay",kDCAY));  pProcButGrp->SetButton(kDCAY);       
+  new TGCheckButton(pProcButGrp,"PAIR pair production",kPAIR));  pProcButGrp->SetButton(kPAIR);       
+  new TGCheckButton(pProcButGrp,"COMP Compton",kCOMP));  pProcButGrp->SetButton(kCOMP);
   new TGCheckButton(pProcButGrp,"PHOT",kPHOT));  pProcButGrp->SetButton(kPHOT);
-  new TGCheckButton(pProcButGrp,"PFIS",kPFIS));  
-  new TGCheckButton(pProcButGrp,"DRAY",kDRAY));  
-  new TGCheckButton(pProcButGrp,"ANNI",kANNI));  pProcButGrp->SetButton(kANNI);       
-  new TGCheckButton(pProcButGrp,"BREM",kBREM));  pProcButGrp->SetButton(kBREM);       
+  new TGCheckButton(pProcButGrp,"PFIS Photofission",kPFIS));  
+  new TGCheckButton(pProcButGrp,"DRAY delta electrons",kDRAY));  
+  new TGCheckButton(pProcButGrp,"ANNI annihilation",kANNI));  pProcButGrp->SetButton(kANNI);       
+  new TGCheckButton(pProcButGrp,"BREM Bremstraslung",kBREM));  pProcButGrp->SetButton(kBREM);       
   new TGCheckButton(pProcButGrp,"MUNU",kMUNU));  pProcButGrp->SetButton(kMUNU);       
-  new TGCheckButton(pProcButGrp,"CKOV",kCKOV));  pProcButGrp->SetButton(kCKOV);       
-  new TGCheckButton(pProcButGrp,"HADR",kHADR));  pProcButGrp->SetButton(kHADR);       
+  new TGCheckButton(pProcButGrp,"CKOV Cerenkovs",kCKOV));  pProcButGrp->SetButton(kCKOV);       
+  new TGCheckButton(pProcButGrp,"HADR Hadronic interactions ",kHADR));  pProcButGrp->SetButton(kHADR);       
   new TGCheckButton(pProcButGrp,"LOSS",kLOSS));  pProcButGrp->SetButton(kLOSS);       
   new TGCheckButton(pProcButGrp,"MULS",kMULS));  pProcButGrp->SetButton(kMULS);       
   new TGCheckButton(pProcButGrp,"RAYL",kRAYL));  pProcButGrp->SetButton(kRAYL);       
-    
+//File    
   fMain->AddFrame(pFileHorFrm=new TGHorizontalFrame(fMain,100,200));
   pFileHorFrm->AddFrame(pCreateBtn=new TGTextButton(pFileHorFrm,"Create"));
   pCreateBtn->Connect("Clicked()","KirConfig",this,"CreateConfigFile()");                                 
+  pFileHorFrm->AddFrame(new TGLabel(pFileHorFrm,Form(" config file as %s",fFileName)));  
   
   fMain->MapSubwindows();   
   fMain->Layout();
@@ -131,8 +131,7 @@ KirConfig::KirConfig()
           
 void KirConfig::CreateConfigFile()
 {   
-  char *sName="ConfigRich.C";
-  FILE *fp=fopen(sName,"w"); if(!fp){Info("CreateConfigFile","Cannot open output file:%sn",sName);return;}
+  FILE *fp=fopen(fFileName,"w"); if(!fp){Info("CreateConfigFile","Cannot open output file:%sn",fFileName);return;}
   
   fprintf(fp,"void Config()\n");
   fprintf(fp,"{\n");
@@ -188,14 +187,41 @@ void KirConfig::CreateConfigFile()
   }
 //Generator
   switch(fGenTypeCombo->GetSelected()){
-    case kHijingPara:   fprintf(fp,"  pGenerator->AddGenerator(new AliGenHIJINGpara(85700),\"HIJING para\",1);\n");  break;
-    case kGun7:   break;
+    case kHijingPara: 
+      fprintf(fp,"  AliGenHIJINGpara *pGen=new AliGenHIJINGpara(91100);\n");
+      fprintf(fp,"  pGen->SetMomentumRange(0,999); pGen->SetPhiRange(0,360); pGen->SetThetaRange(%f,%f);\n",Eta2Theta(8),Eta2Theta(-8));
+      fprintf(fp,"  pGen->SetOrigin(0,0,0);  pGen->SetSigma(0,0,0);\n");
+      fprintf(fp,"  pGen->Init();\n");
+    break;
     case kGun1:     
       fprintf(fp,"  AliGenFixed *pGen=new AliGenFixed(1);\n");  
       fprintf(fp,"  pGen->SetPart(%i); pGen->SetMomentum(%3.1f); pGen->SetOrigin(0,0,0);\n",fPartIdCombo->GetSelected(),float(fMomCombo->GetSelected())/10);  
       fprintf(fp,"  pGen->SetPhiRange(pRICH->C(4)->PhiD()); pGen->SetThetaRange(pRICH->C(4)->ThetaD()-2);\n");            
       fprintf(fp,"  pGen->Init();\n");
-      break;    
+    break;    
+    case kGun7:   
+      fprintf(fp,"  AliGenCocktail *pCocktail=new AliGenCocktail();\n");
+      fprintf(fp,"  for(int i=1;i<=7;i++){\n");
+      fprintf(fp,"    AliGenFixed *pFixed=new AliGenFixed(1);\n");
+      fprintf(fp,"    pFixed->SetPart(%i); pFixed->SetMomentum(2.5+i*0.4); pFixed->SetOrigin(0,0,0);\n",fPartIdCombo->GetSelected());
+      fprintf(fp,"    pFixed->SetPhiRange(gRICH->C(i)->PhiD()); pFixed->SetThetaRange(gRICH->C(i)->ThetaD()-2);\n");                             
+      fprintf(fp,"    pCocktail->AddGenerator(pFixed,Form(\"Fixed %i\",i),1);\n  }\n");  
+      fprintf(fp,"  pCocktail->Init();\n");
+    break;
+    case kPythia7:      
+      fprintf(fp,"  AliGenCocktail *pCocktail=new AliGenCocktail();\n");
+      fprintf(fp,"  for(int i=1;i<=7;i++){\n");
+      fprintf(fp,"    AliGenFixed *pFixed=new AliGenFixed(1);\n");
+      fprintf(fp,"    pFixed->SetPart(%i); pFixed->SetMomentum(2.5+i*0.4); pFixed->SetOrigin(0,0,0);\n",fPartIdCombo->GetSelected());
+      fprintf(fp,"    pFixed->SetPhiRange(gRICH->C(i)->PhiD()); pFixed->SetThetaRange(gRICH->C(i)->ThetaD()-2);\n");                             
+      fprintf(fp,"    pCocktail->AddGenerator(pFixed,Form(\"Fixed %i\",i),1);\n  }\n");  
+      fprintf(fp,"  AliGenPythia *pPythia = new AliGenPythia(-1);\n");
+      fprintf(fp,"  pPythia->SetMomentumRange(0,999999); pPythia->SetPhiRange(20,80); pPythia->SetThetaRange(75,115);\n");
+      fprintf(fp,"  pPythia->SetYRange(-12,12);  pPythia->SetPtRange(0,1000);  pPythia->SetStrucFunc(kCTEQ4L);\n");
+      fprintf(fp,"  pPythia->SetProcess(kPyMb);  pPythia->SetEnergyCMS(14000);\n");      
+      fprintf(fp,"  pCocktail->AddGenerator(pPythia,\"Pythia\",1);\n");  
+      fprintf(fp,"  pCocktail->Init();\n");
+    break;  
   }
 //Other detectors                  
   if(IsDetectorOn(kMAG))  fprintf(fp,"\n  new AliMAG(\"MAG\",\"Magnet\");\n");
@@ -234,13 +260,14 @@ void KirConfig::CreateConfigFile()
 
   fprintf(fp,"\n  ::Info(\"RICH private config\",\"Stop\");\n"); 
   fprintf(fp,"}\n");
-  fclose(fp);
-  gApplication->Terminate(0);
+  fclose(fp);  
+  
+//  fMain->CloseWindow();
 }//CreateConfigFile
 
 KirConfig *p;
 void CreateConfig()
 {
-   p=new KirConfig;
+   p=new KirConfig("Config.C");
 }   
 
index 021e83c95fbed4cd09b2bcfaec4a5619d892b9c4..af0d30adcd3466726f7fa850564d508d38e965fe 100644 (file)
@@ -1,3 +1,43 @@
+//__________________________________________________________________________________________________
+void H_SD()
+{
+  Info("H_SD","Start.");
+  
+  for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop
+    al->GetEvent(iEventN);
+  
+    if(!rl->TreeH()) rl->LoadHits();  al->LoadHeader(); al->LoadKinematics();//from
+    if(!rl->TreeS()) rl->MakeTree("S");    r->MakeBranch("S");//to
+          
+    for(Int_t iPrimN=0;iPrimN<rl->TreeH()->GetEntries();iPrimN++){//prims loop
+      rl->TreeH()->GetEntry(iPrimN);
+      for(Int_t iHitN=0;iHitN<r->Hits()->GetEntries();iHitN++){//hits loop  ???
+        AliRICHhit *pHit=r->Hits()->At(iHitN);        
+        
+        TVector2 x2 = r->Param()->ShiftToWirePos(r->C(pHit->C())->Glob2Loc(pHit->OutX3()));        
+        
+        Int_t iTotQdc=r->Param()->TotQdc(x2,pHit->Eloss());
+        
+        Int_t iPadXmin,iPadXmax,iPadYmin,iPadYmax;
+        r->Param()->Loc2Area(x2,iPadXmin,iPadYmin,iPadXmax,iPadYmax);
+        cout<<"left-down=("<<iPadXmin<<","<<iPadYmin<<") right-up=("<<iPadXmax<<','<<iPadYmax<<')'<<endl;
+        for(Int_t iPadY=iPadYmin;iPadY<=iPadYmax;iPadY++)
+          for(Int_t iPadX=iPadXmin;iPadX<=iPadXmax;iPadX++){
+            Double_t padQdc=iTotQdc*r->Param()->FracQdc(x2,iPadX,iPadY);
+            cout<<padQdc<<endl;
+            if(padQdc>0.1) r->AddSDigit(pHit->C(),iPadX,iPadY,padQdc,al->Stack()->Particle(pHit->GetTrack())->GetPdgCode(),pHit->GetTrack());
+          }            
+      }//hits loop
+    }//prims loop
+    rl->TreeS()->Fill();
+    rl->WriteSDigits("OVERWRITE");
+  }//events loop
+  
+  rl->UnloadHits(); al->UnloadHeader(); al->UnloadKinematics();
+  rl->UnloadSDigits();  
+  Info("H_SD","Stop.");  
+}//H_SD()
+//__________________________________________________________________________________________________
 
 Int_t countContrib[7][3];
 
@@ -75,7 +115,7 @@ void ControlPlots()
 void MainTrank()
 {
   TStopwatch sw;TDatime time;
-  OLD_S_SD(); SD_D();   AliRICHClusterFinder *z=new AliRICHClusterFinder(r); z->Exec();//delete z;  
+  H_SD(); SD_D();   AliRICHClusterFinder *z=new AliRICHClusterFinder(r); z->Exec();//delete z;  
   cout<<"\nInfo in <MainTrank>: Start time: ";time.Print();
     cout<<"Info in <MainTrank>: Stop  time: ";time.Set();  time.Print();
     cout<<"Info in <MainTrank>: Time  used: ";sw.Print();
@@ -205,42 +245,6 @@ void OLD_S_SD()
   Info("OLD_S_SD","Stop.");    
 }//OLD_S_SD()
 //__________________________________________________________________________________________________
-void H_SD()
-{
-  Info("H_SD","Start.");
-  
-  for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop
-    al->GetEvent(iEventN);
-  
-    if(!rl->TreeH()) rl->LoadHits();//from
-    if(!rl->TreeS()) rl->MakeTree("S");    r->MakeBranch("S");//to
-      
-    for(Int_t iPrimN=0;iPrimN<rl->TreeH()->GetEntries();iPrimN++){//prims loop
-      rl->TreeH()->GetEntry(iPrimN);
-      for(Int_t iHitN=0;iHitN<r->Hits()->GetEntries();iHitN++){//hits loop  ???
-        AliRICHhit *pHit=r->Hits()->At(iHitN);        
-        Int_t sector;
-        Int_t iTotQdc=r->Param()->Loc2TotQdc(pHit->OutX3(),pHit->Eloss(),pHit->Pid(),sector);
-        
-        Int_t iPadXmin,iPadXmax,iPadYmin,iPadYmax;
-        r->Param()->Loc2Area(pHit->OutX3(),iPadXmin,iPadYmin,iPadXmax,iPadYmax);
-        cout<<"left-down=("<<iPadXmin<<","<<iPadYmin<<") right-up=("<<iPadXmax<<','<<iPadYmax<<')'<<endl;
-        for(Int_t iPadY=iPadYmin;iPadY<=iPadYmax;iPadY++)
-          for(Int_t iPadX=iPadXmin;iPadX<=iPadXmax;iPadX++){
-            Double_t padQdc=iTotQdc*r->Param()->Loc2PadFrac(pHit->OutX3(),iPadX,iPadY);
-            if(padQdc>0.1)r->AddSDigit(pHit->C(),iPadX,iPadY,padQdc,pHit->GetTrack());
-          }            
-      }//hits loop
-    }//prims loop
-    rl->TreeS()->Fill();
-    rl->WriteSDigits("OVERWRITE");
-  }//events loop
-  
-  rl->UnloadHits();
-  rl->UnloadSDigits();  
-  Info("H_SD","Stop.");  
-}//H_SD()
-//__________________________________________________________________________________________________
 void SD_D()
 {
   Info("SD_D","Start.");  
@@ -369,7 +373,7 @@ Bool_t ReadAlice()
     Error("ReadAlice","galice.root broken, removing all this garbage then init new one");
     new AliRun("gAlice","Alice experiment system");
     gAlice->SetDebug(-1);
-    gAlice->Init("ConfigRich.C");
+    gAlice->Init("Config.C");
     r=(AliRICH*)gAlice->GetDetector("RICH");
     return kFALSE;
   }
@@ -455,13 +459,20 @@ void PrintGeo(Float_t rotDeg=0)
   delete p;
 }//PrintGeo()
 //__________________________________________________________________________________________________
+
+Double_t Gain(Double_t *x,Double_t *par)
+{
+  return AliRICHParam::GainSag(x[0],par[0]);
+}
+
 void TestResponse()
 {
   TCanvas *pC=new TCanvas("c","Amplification test",900,800);
   pC->Divide(1,2);
   pC->cd(1);
-  TF1 *pF1=new TF1("f1","9e-6*pow(x,4)+2e-7*pow(x,3)-0.0316*pow(x,2)-3e-4*x+25.367",-70,70);
-  pF1->Draw();
+  TF1 *pF1=new TF1("f1",Gain,-70,70,1);  pF1->SetParameters(1,1);pF1->SetParNames("Sector");
+  TF1 *pF2=new TF1("f2",Gain,-70,70,1);  pF2->SetParameters(2,1);pF2->SetParNames("Sector");
+  pF1->Draw();pF2->Draw("same");
   
   pC->cd(2);
   
@@ -474,19 +485,18 @@ void TestResponse()
   Double_t deltay=AliRICHParam::SectorSizeY()/nPoints;
   
   for(int i=0;i<nPoints;i++){
-    apH[i]=new TH1F(Form("h%i",i),"Qdc for Photon;QDC;Counts",1000,0,1000); apH[i]->SetLineColor(i);
+    apH[i]=new TH1F(Form("h%i",i),"Qdc for Photon;QDC;Counts",500,0,500); apH[i]->SetLineColor(i);
     pStack->Add(apH[i]);                 
     pLeg->AddEntry(apH[i],Form("@(0,%5.2f->%5.2f)",starty+i*deltay,starty+i*deltay-AliRICHParam::SectorSizeY()/2));
   }
         
   
-  TVector3 x3(0,0,0);  
-  Int_t sector=10;
+  TVector2 x2(0,0);  
 //  AliRICHParam::ResetWireSag();
   for(Int_t i=0;i<10000;i++){//events loop
     for(int j=0;j<nPoints;j++){
-      x3.SetY(starty-j*deltay);
-      apH[j]->Fill(AliRICHParam::Loc2TotQdc(x3,400e-9,500000,sector));
+      x2.Set(0,starty-j*deltay);
+      apH[j]->Fill(AliRICHParam::TotQdc(x2,0));
     }
   }
   pStack->Draw("nostack");
@@ -496,49 +506,21 @@ void TestResponse()
 void TestSD()
 {
   Info("TestSD","Creating test sdigits.");
-  rl->MakeTree("S");r->MakeBranch("S");
-  
-    for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop
-    al->GetEvent(iEventN);
-  
-    if(!rl->TreeH()) rl->LoadHits();//from
-    if(!rl->TreeS()) rl->MakeTree("S");    r->MakeBranch("S");//to
-      
-    for(Int_t iPrimN=0;iPrimN<rl->TreeH()->GetEntries();iPrimN++){//prims loop
-      rl->TreeH()->GetEntry(iPrimN);
-      for(Int_t iHitN=0;iHitN<3;iHitN++){//hits loop  ???
-        AliRICHhit *pHit=r->Hits()->At(iHitN);        
-        TVector3 globX3(pHit->X(),pHit->Y(),pHit->Z());        
-        TVector3 locX3=r->C(pHit->C())->Glob2Loc(globX3);
-        
-        Int_t sector;
-        Int_t iTotQdc=r->Param()->Loc2TotQdc(locX3,pHit->Eloss(),pHit->Pid(),sector);
-        
-        Int_t iPadXmin,iPadXmax,iPadYmin,iPadYmax;
-        r->Param()->Loc2Area(locX3,iPadXmin,iPadYmin,iPadXmax,iPadYmax);
-        cout<<"left-down=("<<iPadXmin<<","<<iPadYmin<<") right-up=("<<iPadXmax<<','<<iPadYmax<<')'<<endl;
-        for(Int_t iPadY=iPadYmin;iPadY<=iPadYmax;iPadY++)
-          for(Int_t iPadX=iPadXmin;iPadX<=iPadXmax;iPadX++){
-            Float_t iPadQdc=iTotQdc*r->Param()->Loc2PadFrac(locX3,iPadX,iPadY);
-            Int_t padx,pady; r->Param()->Loc2Pad(locX3.X(),locX3.Y(),padx,pady);
-            cout<<"hit="<<iHitN<<" ("<<locX3.X()<<','<<locX3.Y()<<")("<<padx<<','<<pady<<") cur pad("<<iPadX<<","<<iPadY<<") qtot="<<iTotQdc<<" qfrac="<<r->Param()->Loc2PadFrac(locX3,iPadX,iPadY)<<endl;
-          }
-//            r->AddSDigit(pHit->C(),padx,pady,r->Param()->Local2PadQdc(localX3,padx,pady),pHit->GetTrack());
-      }//hits loop
-    }//prims loop
-    rl->TreeS()->Fill();
-    rl->WriteSDigits("OVERWRITE");
-  }//events loop
-  
-  rl->UnloadHits();
-  rl->UnloadSDigits();  
-
-  rl->TreeS()->Fill();
-  rl->WriteSDigits("OVERWRITE");
-  rl->UnloadSDigits();
-  cout<<endl;r->Sdigits()->Print();
-  r->ResetSDigits();
-  Info("TestSdigits","Stop.");
+  TVector3 hit(426.55,246.28,17.21);        
+  TVector2 x2=r->C(4)->Glob2Loc(hit);        
+  Int_t iTotQdc=r->Param()->TotQdc(x2,624e-9);        
+  Int_t iPadXmin,iPadXmax,iPadYmin,iPadYmax;
+  Int_t padx,pady;
+  Int_t sec=r->Param()->Loc2Pad(x2,padx,pady);
+  r->Param()->Loc2Area(x2,iPadXmin,iPadYmin,iPadXmax,iPadYmax);
+  Info("TestSD","Initial hit (%7.2f,%7.2f,%7.2f)->(%7.2f,%7.2f)->(%4i,%4i,%4i) gives %i charge",
+                          hit.X(),hit.Y(),hit.Z(),x2.X(),x2.Y(),sec,padx,pady,iTotQdc);
+  
+  cout<<"left-down=("<<iPadXmin<<","<<iPadYmin<<") right-up=("<<iPadXmax<<','<<iPadYmax<<')'<<endl;
+  for(Int_t iPadY=iPadYmin;iPadY<=iPadYmax;iPadY++)
+    for(Int_t iPadX=iPadXmin;iPadX<=iPadXmax;iPadX++)
+       cout<<r->Param()->FracQdc(x2,iPadX,iPadY)<<endl;
+  Info("TestSD","Stop.");
 }//void TestSdigits()
 //__________________________________________________________________________________________________
 void TestC()
@@ -564,105 +546,64 @@ void TestC()
 void TestSeg()
 {
   AliRICHParam *p=r->Param();
-  Int_t padx,pady;
+  Int_t padx,pady,sec;
   Double_t x,y;
-  Double_t dz=p->DeadZone();
-  Double_t sx=p->SectorSizeX(); Double_t sy=p->SectorSizeY();  Double_t px=p->PcSizeX(); Double_t py=p->PcSizeY();
-  cout<<endl;
-  Info("  1-  1","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-px/2    , -py/2        ,padx,pady),padx,pady);
-  Info(" 48-  1","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2-dz , -py/2        ,padx,pady),padx,pady);
-  Info(" 49-  1","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2    , -py/2        ,padx,pady),padx,pady);
-  Info(" 96-  1","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2    , -py/2        ,padx,pady),padx,pady);
-  Info(" 97-  1","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2+dz , -py/2        ,padx,pady),padx,pady);
-  Info("144-  1","sec=%i padx=%3i pady=%3i",p->Loc2Pad( px/2    , -py/2        ,padx,pady),padx,pady);
-  cout<<endl;
-  Info("  1- 80","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-px/2    , -dz/2        ,padx,pady),padx,pady);
-  Info(" 48- 80","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2-dz , -dz/2        ,padx,pady),padx,pady);
-  Info(" 49- 80","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2    , -dz/2        ,padx,pady),padx,pady);
-  Info(" 96- 80","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2    , -dz/2        ,padx,pady),padx,pady);
-  Info(" 97- 80","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2+dz , -dz/2        ,padx,pady),padx,pady);
-  Info("144- 80","sec=%i padx=%3i pady=%3i",p->Loc2Pad( px/2    , -dz/2        ,padx,pady),padx,pady);
-  cout<<endl;
-  Info("  1- 81","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-px/2    ,  dz/2        ,padx,pady),padx,pady);
-  Info(" 48- 81","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2-dz ,  dz/2        ,padx,pady),padx,pady);
-  Info(" 49- 81","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2    ,  dz/2        ,padx,pady),padx,pady);
-  Info(" 96- 81","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2    ,  dz/2        ,padx,pady),padx,pady);
-  Info(" 97- 81","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2+dz ,  dz/2        ,padx,pady),padx,pady);
-  Info("144- 81","sec=%i padx=%3i pady=%3i",p->Loc2Pad( px/2    ,  dz/2        ,padx,pady),padx,pady);
-  cout<<endl;
-  Info("  1-160","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-px/2    ,  py/2        ,padx,pady),padx,pady);
-  Info(" 48-160","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2-dz ,  py/2        ,padx,pady),padx,pady);
-  Info(" 49-160","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2    ,  py/2        ,padx,pady),padx,pady);
-  Info(" 96-160","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2    ,  py/2        ,padx,pady),padx,pady);
-  Info(" 97-160","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2+dz ,  py/2        ,padx,pady),padx,pady);
-  Info("144-160","sec=%i padx=%3i pady=%3i",p->Loc2Pad( px/2    ,  py/2        ,padx,pady),padx,pady);  
-  cout<<endl;
-  Info(" 73-160","sec=%i padx=%3i pady=%3i",p->Loc2Pad(    0    ,  py/2      ,padx,pady),padx,pady);    
-  Info(" 73- 81","sec=%i padx=%3i pady=%3i",p->Loc2Pad(    0    ,  dz/2      ,padx,pady),padx,pady);    
-  Info("0-0dead","sec=%i padx=%3i pady=%3i",p->Loc2Pad(    0    ,   0        ,padx,pady),padx,pady);    
-  Info(" 73- 80","sec=%i padx=%3i pady=%3i",p->Loc2Pad(    0    , -dz/2      ,padx,pady),padx,pady);    
-  Info(" 73-  1","sec=%i padx=%3i pady=%3i",p->Loc2Pad(    0    , -py/2      ,padx,pady),padx,pady);    
-  cout<<endl;
-  p->Pad2Loc(padx=  1,pady=1,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 48,pady=1,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 49,pady=1,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 96,pady=1,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 97,pady=1,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx=144,pady=1,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  cout<<endl;
-  p->Pad2Loc(padx=  1,pady=80,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 48,pady=80,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 49,pady=80,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 96,pady=80,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 97,pady=80,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx=144,pady=80,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  cout<<endl;
-  p->Pad2Loc(padx=  1,pady=81,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 48,pady=81,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 49,pady=81,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 96,pady=81,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 97,pady=81,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx=144,pady=81,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  cout<<endl;
-  p->Pad2Loc(padx=  1,pady=160,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 48,pady=160,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 49,pady=160,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 96,pady=160,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx= 97,pady=160,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
-  p->Pad2Loc(padx=144,pady=160,x,y);  cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl;
+  Double_t eps=0.0000001;
+  Double_t x1=-0.5*p->PcSizeX()+eps; Double_t x2=-0.5*p->SectorSizeX()-p->DeadZone()-eps; Double_t x3=-0.5*p->SectorSizeX()+eps;
+  Double_t x6= 0.5*p->PcSizeX()-eps; Double_t x5= 0.5*p->SectorSizeX()+p->DeadZone()+eps; Double_t x4= 0.5*p->SectorSizeX()-eps;
+  Double_t y1=-0.5*p->PcSizeY()+eps; Double_t y2=-0.5*p->DeadZone()-eps;
+  Double_t y4= 0.5*p->PcSizeY()-eps; Double_t y3= 0.5*p->DeadZone()+eps;
+  TVector2 v2;
+  
+  AliRICHParam::Print();
+  
+  sec=p->Loc2Pad(TVector2(x= 0,y=y1),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 73-  1","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x= 0,y=y2),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 73- 80","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x= 0,y= 0),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" dead  ","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x= 0,y=y3),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 73- 81","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x= 0,y=y4),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 73-160","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)\n",x,y,sec,padx,pady,v2.X(),v2.Y());
+
+  sec=p->Loc2Pad(TVector2(x=x1,y=y4),padx,pady); v2=p->Pad2Loc(padx,pady); Info("  1-160","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x2,y=y4),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 48-160","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x3,y=y4),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 49-160","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x4,y=y4),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 96-160","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x5,y=y4),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 97-160","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x6,y=y4),padx,pady); v2=p->Pad2Loc(padx,pady); Info("144-160","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)\n",x,y,sec,padx,pady,v2.X(),v2.Y());
+  
+  sec=p->Loc2Pad(TVector2(x=x1,y=y3),padx,pady); v2=p->Pad2Loc(padx,pady); Info("  1- 81","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x2,y=y3),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 48- 81","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x3,y=y3),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 49- 81","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x4,y=y3),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 96- 81","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x5,y=y3),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 97- 81","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x6,y=y3),padx,pady); v2=p->Pad2Loc(padx,pady); Info("144- 81","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)\n",x,y,sec,padx,pady,v2.X(),v2.Y());
+  
+  sec=p->Loc2Pad(TVector2(x=x1,y=y2),padx,pady); v2=p->Pad2Loc(padx,pady); Info("  1- 80","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x2,y=y2),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 48- 80","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x3,y=y2),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 49- 80","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x4,y=y2),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 96- 80","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x5,y=y2),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 97- 80","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x6,y=y2),padx,pady); v2=p->Pad2Loc(padx,pady); Info("144- 80","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)\n",x,y,sec,padx,pady,v2.X(),v2.Y());
+  
+  sec=p->Loc2Pad(TVector2(x=x1,y=y1),padx,pady); v2=p->Pad2Loc(padx,pady); Info("  1-  1","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x2,y=y1),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 48-  1","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x3,y=y1),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 49-  1","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x4,y=y1),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 96-  1","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x5,y=y1),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 97-  1","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
+  sec=p->Loc2Pad(TVector2(x=x6,y=y1),padx,pady); v2=p->Pad2Loc(padx,pady); Info("144-  1","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)\n",x,y,sec,padx,pady,v2.X(),v2.Y());
+   
 }//void TestSeg()
 //__________________________________________________________________________________________________
 void TestMenu()
 {
   TControlBar *pMenu = new TControlBar("vertical","RICH test");
   pMenu->AddButton("Test segmentation",  "TestSeg()",         "Test AliRICHParam segmentation methods");
-  pMenu->AddButton("Test transform",     "TestTransform()",   "Test ALiRICHChamber methods");
   pMenu->AddButton("Test response",      "TestResponse()",    "Test AliRICHParam response methods");
   pMenu->AddButton("Test sdigits",       "TestSD()",          "Create test set of sdigits");
-  pMenu->AddButton("Test digits OLD",    "TestDigitsOLD()",   "Create test set of OLD digits");
   pMenu->AddButton("Test clusters",      "TestC()",           "Create test set of clusters");
+  pMenu->AddButton("Test digits OLD",    "TestDigitsOLD()",   "Create test set of OLD digits");
   pMenu->Show();  
 }//TestMenu()
 //__________________________________________________________________________________________________
-void GeoMenu()
-{
-  TControlBar *pMenu = new TControlBar("vertical","RICH draw");
-  pMenu->AddButton("RICH Isometry", "gMC->Gdraw(\"ALIC\", 60,40,0, 10,10, 0.008,0.008)","Draws ALIC volume in isometry");
-  pMenu->AddButton("RICH Front XY", "gMC->Gdraw(\"ALIC\", 0,0,0, 10,10, 0.01,0.01)","Draws ALIC volume in XY view");
-  pMenu->AddButton("RICH Side YZ",  "gMC->Gdraw(\"ALIC\",90,180, 0, 10,10, 0.01,0.01)","Draws ALIC volume in YZ view");
-  pMenu->AddButton("RICH Top XZ",   "gMC->Gdraw(\"ALIC\",90, 90, 0, 10,10, 0.01,0.01)","Draws ALIC volume in XZ view");
-  pMenu->AddButton("Module Isometry","gMC->Gdraw(\"SRIC\", 30,60,0, 10,10, 0.1,0.1)","Draws SRIC volume in isometry");
-  pMenu->AddButton("Module Front XY","gMC->Gdraw(\"SRIC\", 0,0,0, 10,10, 0.1,0.1)","Draws SRIC volume in XY view");
-  pMenu->AddButton("Module Top XZ", "gMC->Gdraw(\"SRIC\",90, 90, 0, 10,10, 0.1,0.1)","Draws SRIC volume in XZ view");
-  pMenu->AddButton("ALICE Tree", "((TGeant3*)gMC)->Gdtree(\"ALIC\")","Draws ALICE tree");      
-  pMenu->AddButton("RICH Tree",  "((TGeant3*)gMC)->Gdtree(\"RICH\")","Draws RICH tree");      
-  pMenu->AddButton("Geo test",  "GeoTest()",   "Draw RICH geo as a macro");
-  pMenu->AddButton("Print ref", "PrintGeo()",  "Print RICH chambers default position");
-  pMenu->AddButton("AliRICH::Print", "r->Print();", "Print RICH chambers default position");
-  pMenu->AddButton("Test transform","TestTransform()","Test L2G and G2L methods");
-  pMenu->Show();  
-}//GeoMenu()
-//__________________________________________________________________________________________________
 void menu()
 { 
   TControlBar *pMenu = new TControlBar("vertical","RICH main");
@@ -670,23 +611,22 @@ void menu()
   if(ReadAlice()){//it's from file, reconstruct
     pMenu->AddButton("hits->sdigits->digits->clusters","MainTrank()","Convert");
     
-    pMenu->AddButton("hits->sdigits",    "H_SD()",       "Perform first phase conversion");
-    pMenu->AddButton("sdigits->digits",  "SD_D()",       "Perform first phase conversion");
-    pMenu->AddButton("digits->clusters", "D_C()",        "Perform first phase conversion");
-    pMenu->AddButton("clusters->recos", "C_R()",         "Perform first phase conversion");
+    pMenu->AddButton("hits->sdigits"    ,"H_SD()" ,"AliRICH::Hits2SDigits");
+    pMenu->AddButton("sdigits->digits"  ,"SD_D()" ,"AliRICHDigitizer");
+    pMenu->AddButton("digits->clusters" ,"D_C()"  ,"AliRICHClusterFinder");
+    pMenu->AddButton("clusters->recos"  ,"C_R()"  ,"AliRICHRecon");
 
-    pMenu->AddButton("Show","Show()","Shows the structure of events in files");
+    pMenu->AddButton("Show",            "Show()","Shows the structure of events in files");
+    pMenu->AddButton("Display Fast",    "DisplFast()",           "Display Fast");
+    pMenu->AddButton("Control Plots",   "ControlPlots()",        "Display some control histograms");
     pMenu->AddButton("OLD specials->sdigits",          "OLD_S_SD()",       "Perform first phase converstion");
     
   }else{//it's aliroot, simulate
     pMenu->AddButton("Run",         "a->Run(1)",       "Process!");
+    pMenu->AddButton("Geo GUI", "new G3GeometryGUI;","Create instance of G4GeometryGUI"); 
   }
-  pMenu->AddButton("Geo submenu",     "GeoMenu()",            "Shows geomentry submenu");
-  pMenu->AddButton("Geo GUI", "new G3GeometryGUI;","Create instance of G4GeometryGUI"); 
   pMenu->AddButton("Test submenu",    "TestMenu()",            "Shows test submenu");
   pMenu->AddButton("Browser",         "new TBrowser;",         "Start ROOT TBrowser");
-  pMenu->AddButton("Display Fast",    "DisplFast()",           "Display Fast");
-  pMenu->AddButton("Control Plots",   "ControlPlots()",        "Display some control histograms");
   pMenu->AddButton("Debug ON",     "DebugON();",   "Switch debug on-off");   
   pMenu->AddButton("Debug OFF",    "DebugOFF();",   "Switch debug on-off");   
   pMenu->AddButton("Quit",            ".q",                    "Close session");