New CPV(GPS2) geometry class
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 25 Oct 2000 08:24:33 +0000 (08:24 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 25 Oct 2000 08:24:33 +0000 (08:24 +0000)
PHOS/AliPPSDGeometry.cxx [new file with mode: 0644]
PHOS/AliPPSDGeometry.h [new file with mode: 0644]

diff --git a/PHOS/AliPPSDGeometry.cxx b/PHOS/AliPPSDGeometry.cxx
new file mode 100644 (file)
index 0000000..2506971
--- /dev/null
@@ -0,0 +1,77 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/*
+  $Log$
+*/
+
+//_________________________________________________________________________
+// Geometry class  for PHOS : PPSD (PHOS Preshower Detector)
+//                  
+//*-- Author   : Yves Schutz (SUBATECH)
+//    Modified : Yuri Kharlov (IHEP, Protvino) 15 September 2000
+//
+// --- ROOT system ---
+
+// --- Standard library ---
+
+#include <iostream.h>
+
+// --- AliRoot header files ---
+
+#include "AliPPSDGeometry.h"
+
+ClassImp(AliPPSDGeometry) ;
+
+//____________________________________________________________________________
+AliPPSDGeometry::AliPPSDGeometry()
+{
+
+  // Initializes the PPSD parameters
+
+  fAnodeThickness           = 0.0009 ; 
+  fAvalancheGap             = 0.01 ; 
+  fCathodeThickness         = 0.0009 ;
+  fCompositeThickness       = 0.3 ; 
+  fConversionGap            = 0.6 ; 
+  fLeadConverterThickness   = 0.56 ; 
+  fLeadToMicro2Gap          = 0.1 ; 
+  fLidThickness             = 0.2 ; 
+  fMicro1ToLeadGap          = 0.1 ; 
+  fMicromegasWallThickness  = 0.6 ; 
+  fNumberOfModulesPhi       = 4 ; 
+  fNumberOfModulesZ         = 4 ; 
+  fNumberOfPadsPhi          = 24 ; 
+  fNumberOfPadsZ            = 24 ;   
+  fPCThickness              = 0.1 ; 
+  fPhiDisplacement          = 0.8 ;  
+  fZDisplacement            = 0.8 ;  
+
+  fMicromegas1Thickness     = fLidThickness + 2 * fCompositeThickness + fCathodeThickness 
+                            + fPCThickness + fAnodeThickness + fConversionGap + fAvalancheGap ; 
+  fMicromegas2Thickness     = fMicromegas1Thickness ; 
+
+  fPPSDModuleSize[0]        = 38.0 ; 
+  fPPSDModuleSize[1]        = fMicromegas1Thickness ; 
+  fPPSDModuleSize[2]        = 38.0 ; 
+  fPPSDBoxSize[0]           = fNumberOfModulesPhi * fPPSDModuleSize[0] + 2 * fPhiDisplacement ;  
+  fPPSDBoxSize[1]           = fMicromegas2Thickness + fMicromegas2Thickness 
+                            + fLeadConverterThickness + fMicro1ToLeadGap + fLeadToMicro2Gap ;    
+  fPPSDBoxSize[2]           = fNumberOfModulesZ *  fPPSDModuleSize[2] + 2 * fZDisplacement ;
+
+}
+
+//____________________________________________________________________________
diff --git a/PHOS/AliPPSDGeometry.h b/PHOS/AliPPSDGeometry.h
new file mode 100644 (file)
index 0000000..3bd4959
--- /dev/null
@@ -0,0 +1,100 @@
+#ifndef ALIPPSDGEOMETRY_H
+#define ALIPPSDGEOMETRY_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+
+//_________________________________________________________________________
+// Geometry derived class for PHOS:PPSD (PHOS Preshower Detector)
+//
+//*-- Author  : Yves Schutz
+//    Modified: Yuri Kharlov (IHEP, Protvino)
+//    14 September 2000
+
+#include <assert.h> 
+
+#include "AliCPVBaseGeometry.h"
+
+class AliPPSDGeometry : public AliCPVBaseGeometry {
+
+public: 
+
+           AliPPSDGeometry();
+  virtual ~AliPPSDGeometry(void) {};
+
+  // PPSD functions
+
+  virtual Float_t GetAnodeThickness(void)          { return  fAnodeThickness ;          }
+  virtual Float_t GetAvalancheGap(void)            { return  fAvalancheGap ;            }
+  virtual Float_t GetCathodeThickness(void)        { return  fCathodeThickness ;        }
+  virtual Float_t GetCompositeThickness(void)      { return  fCompositeThickness ;      }
+  virtual Float_t GetConversionGap(void)           { return  fConversionGap ;           }
+  virtual Float_t GetLeadConverterThickness(void)  { return  fLeadConverterThickness ;  }
+  virtual Float_t GetLeadToMicro2Gap(void)         { return  fLeadToMicro2Gap ;         }
+  virtual Float_t GetLidThickness(void)            { return  fLidThickness ;            }
+  virtual Float_t GetMicromegas1Thickness(void)    { return  fMicromegas1Thickness ;    }
+  virtual Float_t GetMicromegas2Thickness(void)    { return  fMicromegas2Thickness ;    }
+  virtual Float_t GetMicromegasWallThickness(void) { return  fMicromegasWallThickness ; }
+  virtual Float_t GetMicro1ToLeadGap(void)         { return  fMicro1ToLeadGap ;         }
+  virtual Int_t   GetNumberOfPadsPhi(void)         { return  fNumberOfPadsPhi ;         }
+  virtual Int_t   GetNumberOfPadsZ(void)           { return  fNumberOfPadsZ ;           }
+  virtual Int_t   GetNumberOfModulesPhi(void)      { return  fNumberOfModulesPhi ;      }
+  virtual Int_t   GetNumberOfModulesZ(void)        { return  fNumberOfModulesZ ;        }
+  virtual Float_t GetPCThickness(void)             { return  fPCThickness ;             }
+  virtual Float_t GetPhiDisplacement(void)         { return  fPhiDisplacement ;         }
+  virtual Float_t GetCPVBoxSize(Int_t index)       { return  fPPSDBoxSize[index] ;      }
+  virtual Float_t GetPPSDModuleSize(Int_t index)   { return  fPPSDModuleSize[index] ;   }
+  virtual Float_t GetZDisplacement(void)           { return  fZDisplacement ;           }
+  // CPV functions cannot be used for PPSD
+
+  virtual Int_t   GetNumberOfCPVLayers(void)       { AssertCPV("GetNumberOfCPVLayers");     return 0; }
+  virtual Bool_t  IsLeadConverterExists(void)      { AssertCPV("IsLeadConverterExists");    return 0; }
+  virtual Float_t GetCPVActiveSize(Int_t index)    { AssertCPV("GetCPVActiveSize");         return 0; }
+  virtual Int_t   GetNumberOfCPVChipsPhi(void)     { AssertCPV("GetNumberOfCPVChipsPhi");   return 0; }
+  virtual Int_t   GetNumberOfCPVChipsZ(void)       { AssertCPV("GetNumberOfCPVChipsZ");     return 0; }
+  virtual Float_t GetGassiplexChipSize(Int_t index){ AssertCPV("GetGassiplexChipSize");     return 0; }
+  virtual Float_t GetCPVGasThickness(void)         { AssertCPV("GetCPVGasThickness");       return 0; }
+  virtual Float_t GetCPVTextoliteThickness(void)   { AssertCPV("GetCPVTextoliteThickness"); return 0; }
+  virtual Float_t GetCPVCuNiFoilThickness(void)    { AssertCPV("GetCPVCuNiFoilThickness");  return 0; }
+  virtual Float_t GetFTPosition(Int_t index)       { AssertCPV("GetFTPosition");            return 0; }
+  virtual Float_t GetCPVFrameSize(Int_t index)     { AssertCPV("GetCPVFrameSize");          return 0; }
+  virtual Float_t GetIPtoCPVDistance(void)         { AssertCPV("GetIPtoCPVDistance");       return 0; }
+
+private:
+
+  Float_t fAnodeThickness ;          // Thickness of the copper layer which makes the anode 
+  Float_t fAvalancheGap ;            // Thickness of the gas in the avalanche stage
+  Float_t fCathodeThickness ;        // Thickeness of composite material ensuring rigidity of cathode
+  Float_t fCompositeThickness ;      // Thickeness of composite material ensuring rigidity of anode
+  Float_t fConversionGap ;           // Thickness of the gas in the conversion stage
+  Float_t fLeadConverterThickness ;  // Thickness of the Lead converter 
+  Float_t fLeadToMicro2Gap ;         // Thickness of the air gap between the Lead and Micromegas 2        
+  Float_t fLidThickness ;            // Thickness of top lid 
+  Float_t fMicromegas1Thickness ;    // Thickness of the first downstream Micromegas 
+  Float_t fMicromegas2Thickness ;    // Thickness of the second downstream Micromegas 
+  Float_t fMicromegasWallThickness ; // Thickness of the Micromegas leak tight box
+  Float_t fMicro1ToLeadGap ;         // Thickness of the air gap between Micromegas 1 and the Lead
+  Int_t   fNumberOfPadsPhi ;         // Number of pads on a micromegas module ;  
+  Int_t   fNumberOfPadsZ ;           // Number of pads on a micromegas module ;  
+  Int_t   fNumberOfModulesPhi ;      // Number of micromegas modules in phi
+  Int_t   fNumberOfModulesZ ;        // Number of micromegas modules in z
+  Float_t fPCThickness ;             // Thickness of the printed circuit board of the anode   
+  Float_t fPhiDisplacement ;         // Phi displacement of micromegas1 with respect to micromegas2  
+  Float_t fPPSDBoxSize[3] ;          // Size of large box which contains PPSD; matches PHOS module size
+  Float_t fPPSDModuleSize[3] ;       // Size of an individual micromegas module
+  Float_t fZDisplacement ;           // Z displacement of micromegas1 with respect to micromegas2  
+
+  Float_t fIPtoTopLidDistance ;      // Distance from interaction point to top lid of PPSD
+
+  void    AssertCPV(char* name) {
+    printf("Function AliPPSDGeometry::%s should not be called for PPSD geometry\n",name);
+    assert(0==1) ;
+  }
+
+  ClassDef(AliPPSDGeometry,1)        // PPSD geometry class 
+
+} ;
+
+#endif // AliPPSDGEOMETRY_H