ROBAST logo
ROBAST » INCLUDE » AMultilayer

class AMultilayer: public TObject

Function Members (Methods)

public:
virtual~AMultilayer()
voidTObject::AbstractMethod(const char* method) const
AMultilayer(const AMultilayer&)
AMultilayer(shared_ptr<ARefractiveIndex> top, shared_ptr<ARefractiveIndex> bottom)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
voidChangeThickness(size_t i, Double_t thickness)
ULong_tTObject::CheckedHash()
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
voidCoherentTMM(AMultilayer::EPolarization polarization, complex<Double_t> th_0, Double_t lam_vac, Double_t& reflectance, Double_t& transmittance) const
voidCoherentTMMMixed(complex<Double_t> th_0, Double_t lam_vac, Double_t& reflectance, Double_t& transmittance) const
voidCoherentTMMMixed(vector<complex<Double_t> >& th_0, Double_t lam_vac, vector<Double_t>& reflectance, vector<Double_t>& transmittance) const
voidCoherentTMMMixed(complex<Double_t> th_0, vector<Double_t>& lam_vac, vector<Double_t>& reflectance, vector<Double_t>& transmittance) const
voidCoherentTMMP(complex<Double_t> th_0, Double_t lam_vac, Double_t& reflectance, Double_t& transmittance) const
voidCoherentTMMS(complex<Double_t> th_0, Double_t lam_vac, Double_t& reflectance, Double_t& transmittance) const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
const shared_ptr<const TH2D>GetPrecalculatedReflectanceMixed() const
const shared_ptr<const TH2D>GetPrecalculatedTransmittanceMixed() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
Bool_tTObject::HasInconsistentHash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
voidInsertLayer(shared_ptr<ARefractiveIndex> idx, Double_t thickness)
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
voidTObject::operator delete(void* ptr)
voidTObject::operator delete(void* ptr, void* vp)
voidTObject::operator delete[](void* ptr)
voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
AMultilayer&operator=(const AMultilayer&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
voidPreCalculateTMM(Int_t lam_nbins, Double_t lam_min, Double_t lam_max, Int_t th_nbins, Double_t th_min, Double_t th_max)
virtual voidTObject::Print(Option_t* option = "") const
voidPrintLayers(Double_t lambda) const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetNthreads(size_t n)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp) const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
private:
virtual Bool_tCheckTObjectHashConsistency() const
voidCoherentTMMMixedMultiAngle(vector<complex<double> >::const_iterator th_0_cbegin, vector<complex<double> >::const_iterator th_0_cend, Double_t lam_vac, vector<double>::iterator reflectance_it, vector<double>::iterator transmittance_it)
voidCoherentTMMMixedMultiWavelength(complex<Double_t> th_0, vector<double>::const_iterator lam_vac_cbegin, vector<double>::const_iterator lam_vac_cend, vector<double>::iterator reflectance_it, vector<double>::iterator transmittance_it)
Bool_tIsForwardAngle(complex<Double_t> n, complex<Double_t> theta) const
voidListSnell(complex<Double_t> th_0, const vector<complex<Double_t> >& n_list, vector<complex<Double_t> >& th_list) const

Data Members

public:
static TObject::(anonymous)TObject::kBitMask
static TObject::EStatusBitsTObject::kCanDelete
static TObject::EStatusBitsTObject::kCannotPick
static TObject::EStatusBitsTObject::kHasUUID
static TObject::(anonymous)TObject::kInconsistent
static TObject::EStatusBitsTObject::kInvalidObject
static TObject::(anonymous)TObject::kIsOnHeap
static TObject::EStatusBitsTObject::kIsReferenced
static TObject::EStatusBitsTObject::kMustCleanup
static TObject::EStatusBitsTObject::kNoContextMenu
static TObject::(anonymous)TObject::kNotDeleted
static TObject::EDeprecatedStatusBitsTObject::kObjInCanvas
static TObject::(anonymous)TObject::kOverwrite
static AMultilayer::EPolarizationkP
static AMultilayer::EPolarizationkS
static TObject::(anonymous)TObject::kSingleKey
static TObject::(anonymous)TObject::kWriteDelete
static TObject::(anonymous)TObject::kZombie
private:
size_tfNthreads
shared_ptr<TH2D>fPreCalculatedReflectanceMixed
shared_ptr<TH2D>fPreCalculatedTransmittanceMixed
vector<shared_ptr<ARefractiveIndex> >fRefractiveIndexList
vector<Double_t>fThicknessList

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

AMultilayer(shared_ptr<ARefractiveIndex> top, shared_ptr<ARefractiveIndex> bottom)
~AMultilayer()
{}
Bool_t IsForwardAngle(complex<Double_t> n, complex<Double_t> theta) const
 Copied from tmm.is_forward_angle
 if a wave is traveling at angle theta from normal in a medium with index n,
 calculate whether or not this is the forward-traveling wave (i.e., the one
 going from front to back of the stack, like the incoming or outgoing waves,
 but unlike the reflected wave). For real n & theta, the criterion is simply
 -pi/2 < theta < pi/2, but for complex n & theta, it's more complicated.
 See https://arxiv.org/abs/1603.02720 appendix D. If theta is the forward
 angle, then (pi-theta) is the backward angle and vice-versa.
void ListSnell(complex<Double_t> th_0, const vector<complex<Double_t> >& n_list, vector<complex<Double_t> >& th_list) const
 Copied from tmm.list_snell
 return list of angle theta in each layer based on angle th_0 in layer 0,
 using Snell's law. n_list is index of refraction of each layer. Note that
 "angles" may be complex!!
void InsertLayer(shared_ptr<ARefractiveIndex> idx, Double_t thickness)
 ----------------- Top layer
 ----------------- 1st layer
 ----------------- 2nd layer

 ----------------- <------------- Insert a new layer here
 ----------------- Bottom layer
void CoherentTMM(AMultilayer::EPolarization polarization, complex<Double_t> th_0, Double_t lam_vac, Double_t& reflectance, Double_t& transmittance) const
 Copied from tmm.ch_tmm
 Main "coherent transfer matrix method" calc. Given parameters of a stack,
 calculates everything you could ever want to know about how light
 propagates in it. (If performance is an issue, you can delete some of the
 calculations without affecting the rest.)

 pol is light polarization, "s" or "p".

 n_list is the list of refractive indices, in the order that the light would
 pass through them. The 0'th element of the list should be the semi-infinite
 medium from which the light enters, the last element should be the semi-
 infinite medium to which the light exits (if any exits).

 th_0 is the angle of incidence: 0 for normal, pi/2 for glancing.
 Remember, for a dissipative incoming medium (n_list[0] is not real), th_0
 should be complex so that n0 sin(th0) is real (intensity is constant as
 a function of lateral position).

 d_list is the list of layer thicknesses (front to back). Should correspond
 one-to-one with elements of n_list. First and last elements should be
 "inf".

 lam_vac is vacuum wavelength of the light.
void PrintLayers(Double_t lambda) const
void SetNthreads(size_t n)
 Note that having n larger than 1 frequently decreases the total
 performance. Use this method only when you feed a very long vector.
void CoherentTMMMixedMultiAngle(vector<complex<double> >::const_iterator th_0_cbegin, vector<complex<double> >::const_iterator th_0_cend, Double_t lam_vac, vector<double>::iterator reflectance_it, vector<double>::iterator transmittance_it)
CoherentTMMMixed(*cit, lam_vac, r, t)
void CoherentTMMMixedMultiWavelength(complex<Double_t> th_0, vector<double>::const_iterator lam_vac_cbegin, vector<double>::const_iterator lam_vac_cend, vector<double>::iterator reflectance_it, vector<double>::iterator transmittance_it)
CoherentTMMMixed(th_0, *cit, r, t)
AMultilayer(shared_ptr<ARefractiveIndex> top, shared_ptr<ARefractiveIndex> bottom)
void ChangeThickness(size_t i, Double_t thickness)
void CoherentTMMMixed(complex<Double_t> th_0, Double_t lam_vac, Double_t& reflectance, Double_t& transmittance) const
CoherentTMMP(th_0, lam_vac, reflectance, transmittance)
CoherentTMMS(th_0, lam_vac, reflectance, transmittance)
void PreCalculateTMM(Int_t lam_nbins, Double_t lam_min, Double_t lam_max, Int_t th_nbins, Double_t th_min, Double_t th_max)
const std::shared_ptr<const TH2D> GetPrecalculatedReflectanceMixed() const
const std::shared_ptr<const TH2D> GetPrecalculatedTransmittanceMixed() const