New optical properties in. New AliRICHreco.Small mods in AliRICHDisplFast
authordibari <dibari@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 26 Nov 2003 18:43:34 +0000 (18:43 +0000)
committerdibari <dibari@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 26 Nov 2003 18:43:34 +0000 (18:43 +0000)
RICH/AliRICH.cxx
RICH/AliRICH.h
RICH/AliRICHDisplFast.cxx
RICH/AliRICHDisplFast.h
RICH/AliRICHRecon.cxx
RICH/AliRICHv1.cxx
RICH/Opticals.h
RICH/RICHLinkDef.h
RICH/menu.C

index 54e6305..6fe76ff 100644 (file)
@@ -33,7 +33,10 @@ ClassImp(AliRICHhit)
 //__________________________________________________________________________________________________
 void AliRICHhit::Print(Option_t*)const
 {
-  ::Info("hit","chamber=%2i, PID=%9i, TID=%6i, eloss=%8.3f eV",fChamber,fPid,fTrack,fEloss*1e9);
+  TVector3 glob(fX,fY,fZ);
+  AliRICH *pRich = (AliRICH*)gAlice->GetDetector("RICH");
+  TVector3 loc = pRich->C(fChamber)->Glob2Loc(glob);
+  ::Info("hit","chamber=%2i, PID=%9i, TID=%6i, eloss=%9.3f eV, XYz(%7.2f,%7.2f,%7.2f)",fChamber,fPid,fTrack,fEloss*1e9,loc.X(),loc.Y(),loc.Z());
 }
 //__________________________________________________________________________________________________
 ClassImp(AliRICHdigit)
@@ -52,6 +55,13 @@ void AliRICHcluster::Print(Option_t*)const
            fCombiPid,fChamber,fSize,fDimXY,fX,fY,fQdc,fStatus);
 }
 //__________________________________________________________________________________________________
+ClassImp(AliRICHreco)
+//__________________________________________________________________________________________________
+void AliRICHreco::Print(Option_t*)const
+{
+  ::Info("reco","ThetaCherenkov=%9.6f, Nphotons=%4i, TID=%9i",fThetaCherenkov,fNphotons,fTid);
+}
+//__________________________________________________________________________________________________
 ClassImp(AliRICH)    
 //__________________________________________________________________________________________________
 // RICH manager class   
@@ -177,108 +187,9 @@ void AliRICH::CreateMaterials()
 {
     //
     // *** DEFINITION OF AVAILABLE RICH MATERIALS *** 
-    // ORIGIN    : NICK VAN EIJNDHOVEN 
-    // Modified by:  N. Colonna (INFN - BARI, Nicola.Colonna@ba.infn.it) 
-    //               R.A. Fini  (INFN - BARI, Rosanna.Fini@ba.infn.it) 
-    //               R.A. Loconsole (Bari University, loco@riscom.ba.infn.it) 
-    //
-    Int_t i;
-    
-    //Photons energy intervals
-    Float_t ppckov[26];
-    for (i=0;i<26;i++) 
-    {
-       ppckov[i] = (Float_t(i)*0.1+5.5)*1e-9;
-    }
-    
-    
-    //Refraction index for quarz
-    Float_t rIndexQuarz[26];
-    Float_t  e1= 10.666;
-    Float_t  e2= 18.125;
-    Float_t  f1= 46.411;
-    Float_t  f2= 228.71;
-    for (i=0;i<26;i++)
-    {
-       Float_t ene=ppckov[i]*1e9;
-       Float_t a=f1/(e1*e1 - ene*ene);
-       Float_t b=f2/(e2*e2 - ene*ene);
-       rIndexQuarz[i] = TMath::Sqrt(1. + a + b );
-    } 
-    
-    //Refraction index for opaque quarz, methane and grid
-    Float_t rIndexOpaqueQuarz[26];
-    Float_t rIndexMethane[26];
-    Float_t rIndexGrid[26];
-    for (i=0;i<26;i++)
-    {
-       rIndexOpaqueQuarz[i]=1;
-       rIndexMethane[i]=1.000444;
-       rIndexGrid[i]=1;
-    } 
-    
-    //Absorption index for freon
-    Float_t abscoFreon[26] = {179.0987, 179.0987, 179.0987, 179.0987, 179.0987,  179.0987, 179.0987, 179.0987, 
-                              179.0987, 142.9206, 56.64957, 25.58622, 13.95293, 12.03905, 10.42953, 8.804196, 
-                              7.069031, 4.461292, 2.028366, 1.293013, .577267,   .40746,  .334964, 0., 0., 0.};
-    
-
-    Float_t abscoQuarz [26] = {105.8, 65.52, 48.58, 42.85, 35.79, 31.262, 28.598, 27.527, 25.007, 22.815, 21.004,
-                               19.266, 17.525, 15.878, 14.177, 11.719, 9.282, 6.62, 4.0925, 2.601, 1.149, .667, .3627,
-                               .192, .1497, .10857};
-    
-    //Absorption index for methane
-    Float_t abscoMethane[26];
-    for (i=0;i<26;i++) 
-    {
-       abscoMethane[i]=AbsoCH4(ppckov[i]*1e9); 
-    }
-    
-    //Absorption index for opaque quarz, csi and grid, efficiency for all and grid
-    Float_t abscoOpaqueQuarz[26];
-    Float_t abscoCsI[26];
-    Float_t abscoGrid[26];
-    Float_t efficAll[26];
-    Float_t efficGrid[26];
-    for (i=0;i<26;i++)
-    { 
-       abscoOpaqueQuarz[i]=1e-5; 
-       abscoCsI[i]=1e-4; 
-       abscoGrid[i]=1e-4; 
-       efficAll[i]=1; 
-       efficGrid[i]=1;
-    } 
-    
-    //Efficiency for csi 
-    
-    Float_t efficCsI[26] = {0.000199999995, 0.000600000028, 0.000699999975, 0.00499999989, 0.00749999983, 0.010125,
-                            0.0242999997, 0.0405000001, 0.0688500032, 0.105299994, 0.121500008, 0.141749993, 0.157949999,
-                            0.162, 0.166050002, 0.167669997, 0.174299985, 0.176789999, 0.179279998, 0.182599992, 0.18592,
-                            0.187579989, 0.189239994, 0.190899998, 0.207499996, 0.215799987};
-       
-    
-
-    //FRESNEL LOSS CORRECTION FOR PERPENDICULAR INCIDENCE AND
-    //UNPOLARIZED PHOTONS
-
-    for (i=0;i<26;i++)
-    {
-       efficCsI[i] = efficCsI[i]/(1.-Fresnel(ppckov[i]*1e9,1.,0)); 
-    }
-       
-    /*******************************************End of rich_media.f***************************************/
-    
-  Float_t rIndexFreon[26];
-    
-    
-    // --- Photon energy (GeV) 
-    // --- Refraction indexes 
-    for (i = 0; i < 26; ++i) {
-      rIndexFreon[i] = ppckov[i] * .0172 * 1e9 + 1.177;
-      //rIndexFreon[i] = 1;
-    }
-            
-      
+  
+#include "Opticals.h"
+        
   Float_t a=0,z=0,den=0,radl=0,absl=0;
   Float_t tmaxfd=-10.0, deemax=-0.2, stemax=-0.1,epsil=0.001, stmin=-0.001; 
   Int_t   isxfld = gAlice->Field()->Integ();
@@ -294,7 +205,7 @@ void AliRICH::CreateMaterials()
   AliMedium(kCSI, "CSI$", 16, 1, isxfld, sxmgmx,tmaxfd, stemax, deemax, epsil, stmin);
   
   AliMaterial(11, "GRI",      a=63.54,z=29.0,den=8.96,    radl=1.43,   absl=0);    //anode grid (Cu) 
-  AliMedium(7, "GRIGLIA$", 11, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(7, "GRID$", 11, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
   
   AliMaterial(50, "ALUM",     a=26.98,z=13.0,den=2.7,     radl=8.9,    absl=0);    //aluminium sheet (Al)
   AliMedium(10, "ALUMINUM$", 50, 1, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
@@ -304,10 +215,10 @@ void AliRICH::CreateMaterials()
   
   Float_t  aQuartz[2]={28.09,16.0};  Float_t  zQuartz[2]={14.00, 8.0};  Float_t  wmatQuartz[2]={1,2};
   AliMixture (20, "QUA",aQuartz,zQuartz,den=2.64,-2, wmatQuartz);//Quarz (SiO2) - trasnparent 
-  AliMedium(3, "QUARZO$", 20, 1, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(3, "QUARTZ$", 20, 1, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
   
   AliMixture (21, "QUAO",aQuartz, zQuartz, den=2.64, -2, wmatQuartz);//Quarz (SiO2) - opaque
-  AliMedium(8, "QUARZOO$", 21, 1, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(8, "QUARTZO$", 21, 1, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
   
   Float_t  aFreon[2]={12,19};  Float_t  zFreon[2]={6,9};  Float_t wmatFreon[2]={6,14};
   AliMixture (30, "FRE",aFreon,zFreon,den=1.7,-2,wmatFreon);//Freon (C6F14) 
@@ -315,7 +226,7 @@ void AliRICH::CreateMaterials()
   
   Float_t aMethane[2]={12.01,1}; Float_t zMethane[2]={6,1}; Float_t wmatMethane[2]={1,4};
   AliMixture (40, "MET", aMethane, zMethane, den=7.17e-4,-2, wmatMethane);//methane (CH4)     
-  AliMedium(5, "METANO$", 40, 1, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(5, "METHANE$", 40, 1, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
   
   AliMixture (41, "METG", aMethane, zMethane, den=7.17e-4, -2, wmatMethane);
   AliMedium(kGAP, "GAP$", 41, 1, isxfld, sxmgmx,tmaxfd, 0.1, -deemax, epsil, -stmin);
@@ -327,17 +238,18 @@ void AliRICH::CreateMaterials()
   AliMedium(11, "GLASS", 32, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
             
   Int_t *idtmed = fIdtmed->GetArray()-999;
-  gMC->SetCerenkov(idtmed[1000], 26, ppckov, abscoMethane,     efficAll,  rIndexMethane);
-  gMC->SetCerenkov(idtmed[1001], 26, ppckov, abscoMethane,     efficAll,  rIndexMethane);
-  gMC->SetCerenkov(idtmed[1002], 26, ppckov, abscoQuarz,       efficAll,  rIndexQuarz);
-  gMC->SetCerenkov(idtmed[1003], 26, ppckov, abscoFreon,       efficAll,  rIndexFreon);
-  gMC->SetCerenkov(idtmed[1004], 26, ppckov, abscoMethane,     efficAll,  rIndexMethane);
-  gMC->SetCerenkov(idtmed[1005], 26, ppckov, abscoCsI,         efficCsI,  rIndexMethane);
-  gMC->SetCerenkov(idtmed[1006], 26, ppckov, abscoGrid,        efficGrid, rIndexGrid);
-  gMC->SetCerenkov(idtmed[1007], 26, ppckov, abscoOpaqueQuarz, efficAll,  rIndexOpaqueQuarz);
-  gMC->SetCerenkov(idtmed[1008], 26, ppckov, abscoMethane,     efficAll,  rIndexMethane);
-  gMC->SetCerenkov(idtmed[1009], 26, ppckov, abscoGrid,        efficGrid, rIndexGrid);
-  gMC->SetCerenkov(idtmed[1010], 26, ppckov, abscoOpaqueQuarz, efficAll,  rIndexOpaqueQuarz);
+  gMC->SetCerenkov(idtmed[1000], kNbins, aPckov, aAbsCH4,    aQeAll, aIdxCH4);
+  gMC->SetCerenkov(idtmed[1001], kNbins, aPckov, aAbsCH4,    aQeAll, aIdxCH4);
+  gMC->SetCerenkov(idtmed[1002], kNbins, aPckov, aAbsSiO2,   aQeAll, aIdxSiO2);
+  gMC->SetCerenkov(idtmed[1003], kNbins, aPckov, aAbsC6F14,  aQeAll, aIdxC6F14);
+  gMC->SetCerenkov(idtmed[1004], kNbins, aPckov, aAbsCH4,    aQeAll, aIdxCH4);
+  gMC->SetCerenkov(idtmed[1005], kNbins, aPckov, aAbsCsI,    aQeCsI, aIdxCH4);
+  gMC->SetCerenkov(idtmed[1006], kNbins, aPckov, aAbsGrid,   aQeAll, aIdxGrid);
+  gMC->SetCerenkov(idtmed[1007], kNbins, aPckov, aAbsOpSiO2, aQeAll, aIdxOpSiO2);
+  gMC->SetCerenkov(idtmed[1008], kNbins, aPckov, aAbsCH4,    aQeAll, aIdxCH4);
+  gMC->SetCerenkov(idtmed[1009], kNbins, aPckov, aAbsGrid,   aQeAll, aIdxGrid);
+  gMC->SetCerenkov(idtmed[1010], kNbins, aPckov, aAbsOpSiO2, aQeAll, aIdxOpSiO2);
+    
 }//void AliRICH::CreateMaterials()
 //__________________________________________________________________________________________________
 Float_t AliRICH::Fresnel(Float_t ene,Float_t pdoti, Bool_t pola)const
index d92b584..5aa3fbc 100644 (file)
@@ -21,9 +21,10 @@ class AliRICHhit : public AliHit
 public:
   inline   AliRICHhit();
   inline   AliRICHhit(Int_t fIshunt, Int_t track, Int_t *vol, Float_t *hits);
-  inline   AliRICHhit(Int_t tid,TVector3 x3,Double_t eloss);
+  AliRICHhit(Int_t tid,TVector3 x3) :AliHit(0,tid) {fInX3=x3;}
+  inline   AliRICHhit(Int_t tid,TVector3 x3in,TVector3 x3out,Double_t eloss);
   virtual ~AliRICHhit()         {;}
-    
+
   Int_t   C()                   const{return fChamber;}
   Int_t   Chamber()             const{return fChamber;}
   Int_t   Pid()                 const{return fPid;}    
@@ -42,9 +43,10 @@ protected:
   Int_t     fPid;                          //particle code
   Double_t  fEloss;                        //ionisation energy loss in gas
   Float_t   fMomX,fMomY,fMomZ;             //momentum at photochatode entry point
-  Float_t   fNPads;                        // Pads hit
-  Float_t   fCerenkovAngle;                // Dummy cerenkov angle
+  Float_t   fNPads;                        //Pads hit
+  Float_t   fCerenkovAngle;                //Dummy cerenkov angle
   Float_t   fMomFreoX,fMomFreoY,fMomFreoZ; //momentum at freon entry point
+  TVector3  fInX3,fOutX3;                  //3-vectors at the entrance and exit of the GAP
   ClassDef(AliRICHhit,2)                   //RICH hit class
 };//class AliRICHhit
 
@@ -55,6 +57,7 @@ AliRICHhit::AliRICHhit()
   fChamber=fPid=kBad;
   fEloss=kBad;
   fMomX=fMomY=fMomZ=fNPads=fCerenkovAngle=fMomFreoX=fMomFreoY=fMomFreoZ=kBad;
+  fInX3.SetXYZ(0,0,0);fOutX3.SetXYZ(0,0,0);
 }
 //__________________________________________________________________________________________________
 AliRICHhit::AliRICHhit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hit)
@@ -69,10 +72,12 @@ AliRICHhit::AliRICHhit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hit)
   fMomFreoX=hit[19];fMomFreoY=hit[20];fMomFreoZ=hit[21];
 }
 //__________________________________________________________________________________________________
-AliRICHhit::AliRICHhit(Int_t tid,TVector3 x3,Double_t eloss)
+AliRICHhit::AliRICHhit(Int_t tid,TVector3 x3in,TVector3 x3out,Double_t eloss)
            :AliHit(0,tid)
 {//ctor
-  fX=x3.X();fY=x3.Y();fZ=x3.Z();
+  fX=x3out.X();fY=x3out.Y();fZ=x3out.Z();
+  fInX3=x3in;
+  fOutX3=x3out;
   fEloss=eloss;
 }
 
@@ -228,7 +233,24 @@ void AliRICHcluster::CoG()
    fDimXY = 100*(xmax-xmin+1)+ymax-ymin+1;//find box containing cluster
    fStatus=kRaw;
 }//CoG()
+class AliRICHreco: public TObject
+{
+public:
+            AliRICHreco() {fTid=fNphotons=kBad; fThetaCherenkov=kBad;}
+            AliRICHreco(Int_t tid,Double_t thetaCherenkov,Int_t nPhotons) {fTid=tid;fThetaCherenkov=thetaCherenkov;fNphotons=nPhotons;}
 
+  virtual  ~AliRICHreco() {;}
+
+  void    Print(Option_t *option="")const;      //virtual print
+  
+protected:
+   Int_t fTid;                 // track Id reference
+   Int_t fNphotons;            // number of photons contributed to the recontruction
+   Double_t fThetaCherenkov;   // reconstructed Theta Cerenkov for a given charged track
+
+   ClassDef(AliRICHreco,1)  //RICH reco class
+
+};//class AliRICHreco
 //__________________AliRICH_________________________________________________________________________
 class AliRICHParam;
 class AliRICHChamber;
@@ -238,7 +260,7 @@ class AliRICH : public AliDetector
 {
 public:
             AliRICH();                                            
-            AliRICH(const char *name, const char *title);         
+            AliRICH(const char *name, const char *title);
             AliRICH(const AliRICH& RICH):AliDetector(RICH) {;}   
   virtual  ~AliRICH();                                            
           
@@ -251,20 +273,24 @@ public:
   inline  void    CreateSDigits();  
   inline  void    CreateDigits();  
   inline  void    CreateClusters();  
-  void AddHit(Int_t track, Int_t *vol, Float_t *hits)     {TClonesArray &tmp=*fHits; new(tmp[fNhits++])AliRICHhit(fIshunt,track,vol,hits);}//virtual
-  void AddHit(Int_t tid,TVector3 x3,Double_t eloss=0)     {TClonesArray &tmp=*fHits;new(tmp[fNhits++])AliRICHhit(tid,x3,eloss);} 
+  inline  void    CreateRecos();  
+  void AddHit(Int_t track, Int_t *vol, Float_t *hits)                 {TClonesArray &tmp=*fHits; new(tmp[fNhits++])AliRICHhit(fIshunt,track,vol,hits);}//virtual
+  void AddHit(Int_t tid,TVector3 x3)                                  {TClonesArray &tmp=*fHits;new(tmp[fNhits++])AliRICHhit(tid,x3);} 
+  void AddHit(Int_t tid,TVector3 x3in,TVector3 x3out,Double_t eloss)  {TClonesArray &tmp=*fHits;new(tmp[fNhits++])AliRICHhit(tid,x3in,x3out,eloss);} 
   inline void AddSDigit(int c,int x,int y,int q,int pid,int tid); 
   void AddDigit(int c,int x,int y,int q,int cpid,int *tid){TClonesArray &tmp=*((TClonesArray*)fDigitsNew->At(c-1));new(tmp[fNdigitsNew[c-1]++])AliRICHdigit(c,x,y,q,cpid,tid[0],tid[1],tid[2]);}  
   void AddCluster(AliRICHcluster &cl)                     {TClonesArray &tmp=*((TClonesArray*)fClusters->At(cl.C()-1));new(tmp[fNclusters[cl.C()-1]++])AliRICHcluster(cl);}
-  
+  void AddReco(Int_t tid,Double_t thetaCherenkov,Int_t nPhotons) {TClonesArray &tmp=*(TClonesArray*)fRecos;new(tmp[fNrecos++])AliRICHreco(tid,thetaCherenkov,nPhotons);}  
   void ResetHits()     {AliDetector::ResetHits();fNcerenkovs=0;if(fCerenkovs)fCerenkovs->Clear();fNspecials=0;if(fSpecials)fSpecials->Clear();}  //virtual  
   void ResetSDigits()  {fNsdigits=0;  if(fSdigits)  fSdigits ->Clear();}                                 
   void ResetDigits()   {if(fDigitsNew)for(int i=0;i<kNCH;i++){fDigitsNew->At(i)->Clear();fNdigitsNew[i]=0;}}
   void ResetClusters() {if(fClusters) for(int i=0;i<kNCH;i++){fClusters ->At(i)->Clear();fNclusters[i]=0;}}
+  void ResetRecos()    {if(fRecos) fRecos->Clear();fNrecos=0;}
                   //Hits provided by AliDetector
   TClonesArray*   SDigits()             const{return fSdigits;}
   TClonesArray*   Digits(Int_t iC)      const{if(fDigitsNew) return (TClonesArray *)fDigitsNew->At(iC-1);else return 0;}
   TClonesArray*   Clusters(Int_t iC)    const{if(fClusters)  return (TClonesArray *)fClusters->At(iC-1);else return 0;}
+  TClonesArray*   Recos()               const{return fRecos;}
           
   AliRICHChamber* C(Int_t iC)           const{return (AliRICHChamber*)fChambers->At(iC-1);}
   AliRICHParam*   Param()               const{return fpParam;}
@@ -307,6 +333,8 @@ protected:
   Int_t                 fNdigitsNew[kNCH];   //! Array of current numbers of digits
   TObjArray            *fClusters;           //! Each chamber holds it's one lists of clusters 
   Int_t                 fNclusters[kNCH];    //! Array of current numbers of raw clusters
+  TClonesArray         *fRecos;              //! pointer to the list of recos
+  Int_t                 fNrecos;             //! number of recos
 
   TClonesArray         *fCerenkovs;          //! ??? List of cerenkovs
   Int_t                 fNcerenkovs;         //! ??? Current number of cerenkovs
@@ -350,6 +378,13 @@ void AliRICH::CreateClusters()
   for(Int_t i=0;i<kNCH;i++) {fClusters->AddAt(new TClonesArray("AliRICHcluster",10000), i); fNclusters[i]=0;}
 }
 //__________________________________________________________________________________________________
+void AliRICH::CreateRecos()
+{
+  if(fRecos) return;
+  if(GetDebug())Info("CreateRecos","creating recos containers.");
+  fRecos = new TClonesArray("AliRICHreco",1000);fNrecos=0;  
+}
+//__________________________________________________________________________________________________
 void AliRICH::AddSDigit(int c,int x,int y,int q,int pid,int tid) 
 {   
   switch(pid){
index 6036315..dcf75dc 100644 (file)
@@ -18,6 +18,7 @@
 #include "AliRICHParam.h"
 #include <AliLoader.h>
 #include <TCanvas.h>
+#include <TPolyLine.h>
 #include <TParticle.h>
 #include <TStyle.h>
 #include <TH2.h>
@@ -28,13 +29,13 @@ ClassImp(AliRICHDisplFast)
 //__________________________________________________________________________________________________
 void AliRICHDisplFast::Exec()
 {
-  TH2F *pHitsH2     = new TH2F("pHitsH2"  ,  "Event Display",165,-AliRICHParam::PcSizeY()/2,AliRICHParam::PcSizeY()/2,
-                                                             144,-AliRICHParam::PcSizeX()/2,AliRICHParam::PcSizeX()/2);
+  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::PcSizeY()/2,AliRICHParam::PcSizeY()/2,
-                                                             144,-AliRICHParam::PcSizeX()/2,AliRICHParam::PcSizeX()/2);
-  TH2F *pClustersH2 = new TH2F("pClustersH2","Event Display",165,-AliRICHParam::PcSizeY()/2,AliRICHParam::PcSizeY()/2,
-                                                             144,-AliRICHParam::PcSizeX()/2,AliRICHParam::PcSizeX()/2);
+  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);
 
   TCanvas *Display = new TCanvas("Display","RICH Display",0,0,600,600);
     
@@ -96,6 +97,7 @@ void AliRICHDisplFast::Exec()
       pHitsH2->SetTitle(Form("event %i module %2i",iEventN,iChamber));
       pHitsH2->SetMarkerColor(kRed); pHitsH2->SetMarkerStyle(29); pHitsH2->SetMarkerSize(0.4);
       pHitsH2->Draw();
+      DrawSectors();
       Display->Update();
       Display->Modified();
       getchar();
@@ -119,3 +121,84 @@ void AliRICHDisplFast::Exec()
   pRich->GetLoader()->UnloadHits();
 }//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();
+}
index fdc5549..12c9926 100644 (file)
@@ -16,6 +16,8 @@ public :
  
        AliRICHDisplFast() {;}
       ~AliRICHDisplFast() {;}
+      
+  void DrawSectors(); //Draw sectors in plot 
   void Exec();//virtual
 protected:  
   ClassDef(AliRICHDisplFast,0)
index d0d58ce..0b29f26 100644 (file)
@@ -108,7 +108,7 @@ void AliRICHRecon::StartProcessEvent()
         clusY[ich][k] = pCluster->Y();
         clusQ[ich][k] = pCluster->Q();
         clusMul[ich][k] = pCluster->Size();
-        pCluster->Print();
+//        pCluster->Print();
       }
     }
         
@@ -120,7 +120,7 @@ void AliRICHRecon::StartProcessEvent()
       
       Rich()->GetLoader()->TreeH()->GetEntry(i);
 
-      Rich()->Hits()->Print();
+//      Rich()->Hits()->Print();
       Int_t iPrim = 0;
 
       AliRICHhit* pHit=0;
@@ -136,7 +136,7 @@ void AliRICHRecon::StartProcessEvent()
       
       if (!pHit) return;
       
-      pHit->Print();
+//      pHit->Print();
       
       TParticle *pParticle = gAlice->GetRunLoader()->Stack()->Particle(pHit->GetTrack());
       Float_t pmod     = pParticle->P();
@@ -144,7 +144,7 @@ void AliRICHRecon::StartProcessEvent()
       Float_t trackEta = pParticle->Eta();
       Int_t q          = (Int_t)TMath::Sign(1.,pParticle->GetPDG()->Charge());        
 
-      pParticle->Print();
+//      pParticle->Print();
       
       cout << " pmod " << pmod << " pt " << pt << " Eta " << trackEta << " charge " << q << endl;
       
index 9f38988..036fbf1 100644 (file)
@@ -35,18 +35,14 @@ void AliRICHv1::StepManager()
 
   Int_t          copy;
   static Int_t   iCurrentChamber;
-  TLorentzVector x4,p4;
+  static TLorentzVector x4,p4,mipInX4,mipOutX4;
   Float_t        pos[3],mom[4],localPos[3],localMom[4];
   Float_t        coscerenkov;
        
   TParticle *current = (TParticle*)(*gAlice->GetMCApp()->Particles())[gAlice->GetMCApp()->GetCurrentTrackNumber()];
-
-    
  
   Float_t cherenkovLoss=0;
     
-    
-
   if(gMC->TrackPid()==kCerenkov){//C
     Float_t ckovEnergy = current->Energy();
     if(ckovEnergy > 5.6e-09 && ckovEnergy < 7.8e-09 ){//C+E
@@ -99,12 +95,13 @@ void AliRICHv1::StepManager()
   static Float_t eloss;
   if(gMC->TrackCharge() && gMC->CurrentVolID(copy)==gMC->VolId("GAP ")){//MIP in GAP
     gMC->CurrentVolOffID(3,copy); iCurrentChamber=copy;
-    if(gMC->IsTrackEntering()||gMC->IsNewTrack())//MIP in GAP Entering
+    if(gMC->IsTrackEntering()||gMC->IsNewTrack()) {//MIP in GAP Entering
       eloss=0;                                                           
-    else if(gMC->IsTrackExiting()||gMC->IsTrackStop()||gMC->IsTrackDisappeared()){//MIP in GAP Exiting
+      gMC->TrackPosition(mipInX4);
+    }else if(gMC->IsTrackExiting()||gMC->IsTrackStop()||gMC->IsTrackDisappeared()){//MIP in GAP Exiting
       eloss+=gMC->Edep();//take into account last step dEdX
-      gMC->TrackPosition(x4);  
-      AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(),x4.Vect(),eloss);//HIT for MIP for conditions: MIP in GAP Exiting
+      gMC->TrackPosition(mipOutX4);  
+      AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(),mipInX4.Vect(),mipOutX4.Vect(),eloss);//HIT for MIP for conditions: MIP in GAP Exiting
       GenerateFeedbacks(iCurrentChamber,eloss);//MIP+GAP+Exit
     }else//MIP in GAP going inside
       eloss   += gMC->Edep();
index 4fc018f..bd8d4f1 100644 (file)
@@ -24,17 +24,8 @@ void Opticals()
     aIdxOpSiO2[i]  =1;
   } 
     
-  Float_t aAbsC6F14old[kNbins]={//previous values 26 in total added 0.0001 to the 30
-      179.0987, 179.0987, 179.0987, 179.0987, 179.0987, 179.0987, 179.0987, 179.0987, 179.0987, 142.9206, 
-       56.6496,  25.5862,  13.9529,  12.0391,  10.4295,   8.8042,   7.0690,   4.4611,   2.0284,   1.2930, 
-        0.5772,   0.4074,   0.3350,   0.0001,   0.0001,   0.0001    0.0001,   0.0001,   0.0001,   0.0001};
-  Float_t aAbsSiO2old[kNbins]={//previous values 26 in total added 0.0001 to the 30
-      105.8000,  65.5200,  48.5800,  42.8500,  35.7900,  31.2620,  28.5980,  27.5270,  25.0070,  22.8150, 
-       21.0040,  19.2660,  17.5250,  15.8780,  14.1770,  11.7190,   9.2820,   6.6200,   4.0930,   2.6010, 
-        1.1490,   0.6670,   0.3630,   0.1920,   0.1500,   0.1090,   0.0001,   0.0001,   0.0001,   0.0001};
-      
   Float_t aAbsC6F14[kNbins]={//New values from A.DiMauro 28.10.03 total 31
-    32701.4219, 17996.1141, 10039.7281, 1799.1230, 1799.1231, 1799.1231, 1241.4091, 179.0987, 179.0986, 179.0987
+    32701.4219, 17996.1141, 10039.7281, 1799.1230, 1799.1231, 1799.1231, 1241.4091, 179.0987, 179.0986, 179.0987,
       179.0987,   118.9800,    39.5058,   23.7244,   11.1283,    7.1573,    3.6249,   2.1236,   0.7362,   0.5348,
         0.3387,     0.3074,     0.3050,    0.0001,    0.0001,    0.0001,    0.0001,   0.0001,   0.0001,   0.0001};    
   Float_t aAbsSiO2[kNbins]={//New values from A.DiMauro 28.10.03 total 31
@@ -53,26 +44,35 @@ void Opticals()
       aAbsGrid[i]        =1e-4; 
     }
     
-  Float_t aQeCsIold[kNbins]={
-    0.0002, 0.0006, 0.0007, 0.0050, 0.0075, 0.0101, 0.0243, 0.0405, 0.0689, 0.1053, 
-    0.1215, 0.1417, 0.1579, 0.1620, 0.1661, 0.1677, 0.1743, 0.1768, 0.1793, 0.1826,
-    0.1859, 0.1876, 0.1892, 0.1909, 0.2075, 0.2158, 0.0001, 0.0001, 0.0001, 0.0001 };
-    
-  Float_t aQeCsI1[kNbins] = {0.0002, 0.0006, 0.0007, 0.0010, 0.0049, 0.0073, 0.0104, 0.0519, 0.0936, 0.1299,
-                             0.1560, 0.1768, 0.1872, 0.1976, 0.2142, 0.2288, 0.2434, 0.2599, 0.2673, 0.2808,
-                             0.2859, 0.2954, 0.3016, 0.3120, 0.3172, 0.3224, 0.3266, 0.3328, 0.3359, 0.3390};
+  Float_t aQeCsI[kNbins] = {//New values from A.DiMauro 28.10.03 total 31
+                            0.0002, 0.0006, 0.0007, 0.0010, 0.0049, 0.0073, 0.0104, 0.0519, 0.0936, 0.1299,
+                            0.1560, 0.1768, 0.1872, 0.1976, 0.2142, 0.2288, 0.2434, 0.2599, 0.2673, 0.2808,
+                            0.2859, 0.2954, 0.3016, 0.3120, 0.3172, 0.3224, 0.3266, 0.3328, 0.3359, 0.3390};
 //                             0.3431};
 
   
   Float_t aQeAll[kNbins];
   for(i=0;i<kNbins;i++){
-    aQeCsI1[i]/= (1.0-Fresnel(aPckov[i]*1e9,1.0,0)); //FRESNEL LOSS CORRECTION
+    aQeCsI[i]/= (1.0-Fresnel(aPckov[i]*1e9,1.0,0)); //FRESNEL LOSS CORRECTION
     aQeAll[i]=1; //QE for all other materials except for PC must be 1.
   }
        
                     
 #ifdef __CINT__
 
+  Float_t aAbsC6F14old[kNbins]={//previous values 26 in total added 0.0001 to the 30
+      179.0987, 179.0987, 179.0987, 179.0987, 179.0987, 179.0987, 179.0987, 179.0987, 179.0987, 142.9206, 
+       56.6496,  25.5862,  13.9529,  12.0391,  10.4295,   8.8042,   7.0690,   4.4611,   2.0284,   1.2930, 
+        0.5772,   0.4074,   0.3350,   0.0001,   0.0001,   0.0001,   0.0001,   0.0001,   0.0001,   0.0001};
+  Float_t aAbsSiO2old[kNbins]={//previous values 26 in total added 0.0001 to the 30
+      105.8000,  65.5200,  48.5800,  42.8500,  35.7900,  31.2620,  28.5980,  27.5270,  25.0070,  22.8150, 
+       21.0040,  19.2660,  17.5250,  15.8780,  14.1770,  11.7190,   9.2820,   6.6200,   4.0930,   2.6010, 
+        1.1490,   0.6670,   0.3630,   0.1920,   0.1500,   0.1090,   0.0001,   0.0001,   0.0001,   0.0001};
+  Float_t aQeCsIold[kNbins]={
+    0.0002, 0.0006, 0.0007, 0.0050, 0.0075, 0.0101, 0.0243, 0.0405, 0.0689, 0.1053, 
+    0.1215, 0.1417, 0.1579, 0.1620, 0.1661, 0.1677, 0.1743, 0.1768, 0.1793, 0.1826,
+    0.1859, 0.1876, 0.1892, 0.1909, 0.2075, 0.2158, 0.0001, 0.0001, 0.0001, 0.0001 };      
+
 //Now plot all the thigs  
 //Freon, Quartz, Opaque ,Methane,CsI,Grid   
   const Int_t kC6F14M= 24; const Int_t kC6F14C=kRed;  
@@ -114,7 +114,7 @@ void Opticals()
   pAbsCH4Gr->Draw("APL");
   
   pC->cd(4);
-  TGraph *pQeCsIG=new TGraph(kNbins,aPckov,aQeCsI1);
+  TGraph *pQeCsIG=new TGraph(kNbins,aPckov,aQeCsI);
   pQeCsIG->SetMarkerStyle(kCsIMarker); pQeCsIG->SetMarkerColor(kCsIColor);
   pQeCsIG->Draw("APL");
   pQeCsIG->GetXaxis()->SetTitle("energy, GeV");
@@ -129,7 +129,7 @@ void Opticals()
     aTrC6F14[i]=TMath::Exp(-AliRICHParam::FreonThickness() /(aAbsC6F14[i]+0.0001));
     aTrSiO2[i] =TMath::Exp(-AliRICHParam::QuartzThickness()/(aAbsSiO2[i] +0.0001));
     aTrCH4[i]  =TMath::Exp(-AliRICHParam::GapThickness()   /(aAbsCH4[i]  +0.0001));    
-    aTotTr[i]    =aTrC6F14[i]*aTrSiO2[i]*aTrCH4[i]*aQeCsI1[i];
+    aTotTr[i]    =aTrC6F14[i]*aTrSiO2[i]*aTrCH4[i]*aQeCsI[i];
   }
   TGraph *pTrC6F14G=new TGraph(kNbins,aPckov,aTrC6F14);pTrC6F14G->SetMarkerStyle(kC6F14M);pTrC6F14G->SetMarkerColor(kC6F14C);  
   TGraph *pTrSiO2G=new TGraph(kNbins,aPckov,aTrSiO2);pTrSiO2G->SetMarkerStyle(kSiO2M); pTrSiO2G->SetMarkerColor(kSiO2C);  
@@ -158,13 +158,13 @@ void Opticals()
   for(int i=1;i<=7;i++){
     pQeC->cd(i);  
     switch(i){
-      case 1: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI1);pQeCsIGr->SetTitle("Module 1");break;
-      case 2: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI2);pQeCsIGr->SetTitle("Module 2");break;
-      case 3: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI3);pQeCsIGr->SetTitle("Module 3");break;
-      case 4: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI4);pQeCsIGr->SetTitle("Module 4");break;
-      case 5: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI5);pQeCsIGr->SetTitle("Module 5");break;
-      case 6: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI6);pQeCsIGr->SetTitle("Module 6");break;
-      case 7: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI7);pQeCsIGr->SetTitle("Module 7");break;
+      case 1: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI);pQeCsIGr->SetTitle("Module 1");break;
+      case 2: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI);pQeCsIGr->SetTitle("Module 2");break;
+      case 3: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI);pQeCsIGr->SetTitle("Module 3");break;
+      case 4: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI);pQeCsIGr->SetTitle("Module 4");break;
+      case 5: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI);pQeCsIGr->SetTitle("Module 5");break;
+      case 6: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI);pQeCsIGr->SetTitle("Module 6");break;
+      case 7: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI);pQeCsIGr->SetTitle("Module 7");break;
     }
     pQeCsIGr->SetMarkerStyle(kCsIMarker); pQeCsIGr->SetMarkerColor(kCsIColor);  
     pQeCsIGr->Draw("APL");
index 865cae0..58d38dc 100644 (file)
@@ -10,6 +10,7 @@
 #pragma link C++ class  AliRICHCerenkov+;
 #pragma link C++ class  AliRICHdigit+;
 #pragma link C++ class  AliRICHcluster+;
+#pragma link C++ class  AliRICHreco+;
 #pragma link C++ class  AliRICHv3+;
 #pragma link C++ class  AliRICHSDigit+;
 #pragma link C++ class  AliRICHSegmentationV0+;
index db32bcd..d49abb8 100644 (file)
@@ -146,7 +146,7 @@ Double_t d2r = TMath::DegToRad();
 void DisplFast(){ AliRICHDisplFast *d = new AliRICHDisplFast();  d->Exec();}  
 
 
-void Digits2Recos()
+void C_R()
 {
   AliRICHRecon *detect = new AliRICHRecon("RICH patrec algorithm","Reconstruction");
     
@@ -175,7 +175,7 @@ void OLD_S_SD()
 
     for(Int_t iPrimN=0;iPrimN<rl->TreeH()->GetEntries();iPrimN++){//prims loop
       rl->TreeH()->GetEntry(iPrimN);
-      for(Int_t i=0;i<r->Specials()->GetEntries();i++){//specials loop          
+      for(Int_t i=0;i<r->Specials()->GetEntries();i++){//specials loop
         Int_t padx=1+ ((AliRICHSDigit*)r->Specials()->At(i))->PadX()+r->Param()->NpadsX()/2;
         Int_t pady=1+ ((AliRICHSDigit*)r->Specials()->At(i))->PadY()+r->Param()->NpadsY()/2;
         Double_t q=  ((AliRICHSDigit*)r->Specials()->At(i))->QPad();
@@ -264,8 +264,9 @@ void SD_D()
 //        else
 //          Info("","More then 3 sdigits for the given pad");
       }else{//new pad, add the pevious one
-        if(id!=kBad&&r->Param()->IsOverTh(chamber,x,y,q))
+        if(id!=kBad&&r->Param()->IsOverTh(chamber,x,y,q)) {
            r->AddDigit(chamber,x,y,q,combiPid,tid);
+         }
         combiPid=pSdig->CombiPid();chamber=pSdig->C();id=pSdig->Id();
         x=pSdig->X();y=pSdig->Y();
         q=pSdig->Q();
@@ -664,9 +665,10 @@ 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 converstion");
-    pMenu->AddButton("sdigits->digits",  "SD_D()",       "Perform first phase converstion");
-    pMenu->AddButton("digits->clusters", "D_C()",        "Perform first phase converstion");
+    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("Show","Show()","Shows the structure of events in files");
     pMenu->AddButton("OLD specials->sdigits",          "OLD_S_SD()",       "Perform first phase converstion");