package MultiLayer @ISA = qw() sub nLayer return shift->{nLayer}; sub pLayerArray return shift->{pLayerArray}; sub pLayer sub pLayer { my($this,$idx)= return $this->{pLayerArray}->[$idx]; sub SetIncidentAngle sub SetIncidentAngle { my($this,$a)= return $this->{IncidentAngle} = $a; sub IncidentAngle sub IncidentAngle { my($this)= return $this->{IncidentAngle}; sub SetVariable my ($this, $idx, $VarName, $val) = @_; return $pLayer->SetVariable($VarName, $val); sub pVariable my ($this, $idx, $VarName) = @_; return undef; return undef; return $p; sub SetCoherency my ($this, $idx, $Coherency) = @_; return $this->{"Coherency$idx"} = $Coherency; sub Coherency my ($this, $idx) = @_; return $this->{"Coherency$idx"}; sub SetLayerThickness my ($this, $idx, $Thickness) = @_; return $this->{"Thickness$idx"} = $Thickness; sub LayerThickness my ($this, $idx) = @_; return $this->{"Thickness$idx"}; sub pLayerThickness my ($this, $idx) = @_; return $p; sub new my ($module) = @_; return $this; sub DESTROY my $this = shift; sub Initialize my ($this) = @_; sub LightAngle my ($this, $idx, $E, $Angle0) = @_; return undef; return $Angle; sub AddLayer my ($this, $pMaterial, $Thickness, $Coherency) = @_; return $this->{nLayer}++; sub CalEps my ($this, $E) = @_; return @e; sub CalEta my ($this, $E, $idx) = @_; return ($etas, $etap, $N, $n, $k, $Angle, $cosQ); sub CalPsiDelta my ($this, $E) = @_; return ($Psi, $Delta); sub DecomposeLayersByCoherency my ($this) = @_; return \@LayersBlock; sub CalFresnelCoefficient my ($this, $E) = @_; return ($rs23, $rp23, $ts23, $tp23, $Rs, $Rp, $Ts, $Tp); sub CalInterfaceFresnelCoefficient my ($this, $E, $idx1, $idx2) = @_; return ($r12s, $r12p, $t12s, $t12p, $R12s, $R12p, $T12s, $T12p); sub PhaseShift my ($this, $E, $idx) = @_; return undef; return ($PSfilm, $PSsubstrate); sub CalIncoherntRT my ($this, $E, $Rs01, $Rp01, $Ts01, $Tp01, $pLayersBlock) = @_; return ($Rs012, $Rp012, $Ts012, $Tp012); sub CalReflectionFresnelCoefficient_FromBottom my ($this, $E) = @_; return ($rs, $rp, $rp, $tp); return ($rs23, $rp23, $ts23, $tp23, $Rs, $Rp, $Ts, $Tp); sub CalFresnelCoefficient_ByCharacteristicMatrix my ($this, $E) = @_; return ($rs, $rp, $rp, $tp); return ($rs, $rp, $ts, $tp, $Rs, $Rp, $Ts, $Tp); sub SaveDielectricFunctionsCSV my ($this, $path, $Emin, $EStep, $nE, $pObs1, $pObs2) = @_; return undef; return 1; sub PrintLayers my ($this) = @_; sub CalEpsRTForSubstrateAtNormalncidence my ($this, $E) = @_; return ($Rtots, $Rtotp); sub CalFresnelCoefficientForBilayer my ($this, $E, $AngleIncident) = @_; return undef; return ($rs, $ts, $rp, $tp); sub CalEpsRTForSubstrate my ($this, $E, $Angle) = @_; return undef; return ($Rtots, $Rtotp, $Ttots, $Ttotp); sub CalReflectionFresnelCoefficient_FromTop my ($this, $E) = @_; return ($rs, $rp, $rp, $tp); return ($rs01, $rp01, $ts01, $tp01, $Rs, $Rp, $Ts, $Tp);