# skrf.calibration.calibration.TRL.__init__

TRL.__init__(measured, ideals=None, estimate_line=False, n_reflects=1, solve_reflect=True, *args, **kwargs)[source]

Initialize a TRL calibration.

Note that the order of measured and ideals is strict. It must be [Thru, Reflect, Line]. A multiline algorithms is used if more than one line is passed. A multi-reflect algorithm is used if multiple reflects are passed, see n_reflects argument.

All of the ideals can be individually set to None, or the entire list set to None (ideals=None). For each ideal set to None, the following assumptions are made:

• thru : flush thru

• reflect : flush shorts

• line : an approximately 90deg matched line (can be lossy)

The reflect ideals can also be given as a +-1.

If thru is non-zero length, the calibration is done with zero length thru and the ideal thru length is subtracted from the ideal lines. The resulting calibration reference plane is at the center of the thru. Ideal reflect standard reference plane is at the center of the thru even if the ideal thru length is non-zero.

Note you can also use the estimate_line option to automatically estimate the initial guess for the line length from measurements . This is sensible if you have no idea what the line length is, but your error networks are well matched (E_ij >>E_ii).

Notes

This implementation inherits from `EightTerm`. dont forget to pass switch_terms.

Parameters:
• measured (list of `Network`) – must be in order [Thru, Reflect[s], Line[s]]. if the number of reflects is >1 then use n_reflects argument.

• ideals (list of `Network`, [+1,-1] , None) – must be in order [Thru, Reflect, Line]. Each element in the list may be None, or equivalently, the list may be None. Also the reflects can be simply given as +1 or -1.

• estimate_line (bool) – should we estimates the length of the line standard from raw measurements, if not we assume its about 90 deg.

• solve_reflect (bool) – Solve for the reflect or not.

• n_reflects (1) – number of reflective standards

• *args (passed to EightTerm.__init__) – dont forget the switch_terms argument is important

• **kwargs (passed to EightTerm.__init__) – dont forget the switch_terms argument is important

Examples

```>>> thru = rf.Network('thru.s2p')
>>> reflect = rf.Network('reflect.s2p')
>>> line = rf.Network('line.s2p')
```

Ideals is None, so we assume it’s close to a flush short:

```>>> trl = TRL(measured=[thru,reflect,line], ideals=None)
```

Reflect is given as close to a flush short:

```>>> trl = TRL(measured=[thru,reflect,line], ideals=[None,-1,None])
```

Reflect is given as close to a flush open:

```>>> trl = TRL(measured=[thru,reflect,line], ideals=[None,+1,None])
```