ROOT logo
// $Id: ARefractiveIndex.h 3 2010-11-26 17:17:31Z oxon $
// Author: Akira Okumura 2007/09/24

/******************************************************************************
 * Copyright (C) 2006-, Akira Okumura                                         *
 * All rights reserved.                                                       *
 *****************************************************************************/

#ifndef A_BORDER_SURFACE_CONDITION_H
#define A_BORDER_SURFACE_CONDITION_H

///////////////////////////////////////////////////////////////////////////////
//
// ABorderSurfaceCondition
//
// Defines the condition of the boarder surface between two volumes. Works as
// G4LogicalBorderSurface + G4OpticalSurface in Geant4.
//
///////////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TObject
#include "TObject.h"
#endif
#ifndef ROOT_TObjArray
#include "TObjArray.h"
#endif
#ifndef ROOT_TGeoVolume
#include "TGeoVolume.h"
#endif

class ABorderSurfaceCondition : public TObject {
private:
  static TObjArray fSurfaceArray;
  TGeoVolume*      fVolume[2];
  Double_t         fSigma;

public:
  ABorderSurfaceCondition(TGeoVolume* volume1, TGeoVolume* volume2);
  virtual ~ABorderSurfaceCondition();

  const TGeoVolume* GetVolume1() const {return fVolume[0];}
  const TGeoVolume* GetVolume2() const {return fVolume[1];}
  Double_t          GetGaussianRoughness() const {return fSigma;}
  static ABorderSurfaceCondition* GetSurfaceCondition(TGeoVolume* volume1, TGeoVolume* volume2);

  void              SetGaussianRoughness(Double_t sigma /* (rad) */);

  ClassDef(ABorderSurfaceCondition, 1)
};

#endif // A_BORDER_SURFACE_CONDITION_H
 ABorderSurfaceCondition.h:1
 ABorderSurfaceCondition.h:2
 ABorderSurfaceCondition.h:3
 ABorderSurfaceCondition.h:4
 ABorderSurfaceCondition.h:5
 ABorderSurfaceCondition.h:6
 ABorderSurfaceCondition.h:7
 ABorderSurfaceCondition.h:8
 ABorderSurfaceCondition.h:9
 ABorderSurfaceCondition.h:10
 ABorderSurfaceCondition.h:11
 ABorderSurfaceCondition.h:12
 ABorderSurfaceCondition.h:13
 ABorderSurfaceCondition.h:14
 ABorderSurfaceCondition.h:15
 ABorderSurfaceCondition.h:16
 ABorderSurfaceCondition.h:17
 ABorderSurfaceCondition.h:18
 ABorderSurfaceCondition.h:19
 ABorderSurfaceCondition.h:20
 ABorderSurfaceCondition.h:21
 ABorderSurfaceCondition.h:22
 ABorderSurfaceCondition.h:23
 ABorderSurfaceCondition.h:24
 ABorderSurfaceCondition.h:25
 ABorderSurfaceCondition.h:26
 ABorderSurfaceCondition.h:27
 ABorderSurfaceCondition.h:28
 ABorderSurfaceCondition.h:29
 ABorderSurfaceCondition.h:30
 ABorderSurfaceCondition.h:31
 ABorderSurfaceCondition.h:32
 ABorderSurfaceCondition.h:33
 ABorderSurfaceCondition.h:34
 ABorderSurfaceCondition.h:35
 ABorderSurfaceCondition.h:36
 ABorderSurfaceCondition.h:37
 ABorderSurfaceCondition.h:38
 ABorderSurfaceCondition.h:39
 ABorderSurfaceCondition.h:40
 ABorderSurfaceCondition.h:41
 ABorderSurfaceCondition.h:42
 ABorderSurfaceCondition.h:43
 ABorderSurfaceCondition.h:44
 ABorderSurfaceCondition.h:45
 ABorderSurfaceCondition.h:46
 ABorderSurfaceCondition.h:47
 ABorderSurfaceCondition.h:48
 ABorderSurfaceCondition.h:49
 ABorderSurfaceCondition.h:50
 ABorderSurfaceCondition.h:51