Usage of b Tag Objects for 2011 Open Data Project

General Information

Supported Algorithms and Operating Points

The recommended taggers for the analysis of 2011 data are: Combined Secondary Vertex (CSV). Data/MC scale factors have been provided for specific cuts on the b-tag discriminator (operating points) corresponding to a mis-identification probability for light-flavoured jets of 10% (loose L) or 1% (medium M) or 0.1% (tight T).

In the following table, the cuts corresponding to each recommended operating point are provided.

Tagger name Operating point Discriminator cut Scale factors
Combined Secondary Vertex Loose (CSVL) 0.244 CSV.csv
Combined Secondary Vertex Medium (CSVM) 0.679 idem
Combined Secondary Vertex Tight (CSVL) 0.898 idem

Data/MC Scale Factors

The following recommendations are to be applied in the jet pt range given bellow and for abs(eta) < 2.4. SF stands for Data/MC scale factor of the tagging efficiencies, eff_b, eff_c, eff_l for the tagging efficiency of b jets, c jets and light jets (mistagging rate). Instructions about how to access Data/MC scale factors in your analysis can be found in the BTagCalibration twiki. The .csv files containing the scale factors can be found in the last column of the table above.

As the tagging efficiencies depends on the event kinematics, it is mandatory to first compute from MC the tagging efficiencies of each flavour and then to weight them by the provided SF values. Instruction on how to compute the b-tagging efficiencies in MC events can be found here.

  • SFb as a function of jet pT, from muon-jet data
    SFb is provided for each tagger/op in the pt range 30-670 GeV and abs(eta) range 0-2.4.
    The measurementType is "mujets".

  • SFc = SFb with twice the quoted uncertainty
    This doubled uncertainty is already taken into account in the .csv file.
    The measurementType is "mujets".

  • SFlight as a function of jet pt for several eta bins
    SFlight is provided for each tagger/op in the pt range 20-670 GeV in several abs(eta) bins depending on the operating point.
    The measurementType is "comb".

  • Correlations between the SF measurements
    SFlight is mostly uncorrelated to SFc and SFb
    SFc is conservatively taken as correlated to SFb
    so when varying SFb by +/-1 sigma, one has to vary SFc by +/- 1 sigma simultaneously.
    SFlight can be independently varied by +/-1 sigma and the resulting uncertainty added in quadrature to that of SFc and SFb.

  • Uncertainty on the overall number of events (integrated in pt, eta): the uncertainties across different jet pt and eta bins, when provided, have to be considered as fully correlated. When computing the effect of scaling the scale factors by +/- 1 sigma on the global efficiency for a given MC sample, the SFs have therefore to be scaled up/down simultaneously over the whole jet pt and eta ranges.

b-tagging efficiency in MC samples

b-tagging efficiency in $ p_\text{T} $ bin $ i $ and $ \eta $ bin $ j $ is defined as

\[ \varepsilon_f(i,j) = \frac{N_f^\text{b-tagged}(i,j)}{N_f^\text{Total}(i,j)} \]

where $ N_f^\text{Total}(i,j) $ and $ N_f^\text{b-tagged}(i,j) $ are the total number and the number of b-tagged jets, respectively, of flavor $ f $ in the $ (p_\text{T},\eta) $ bin $ (i,j) $. The jet flavor can be obtained using the jet flavor tool described in SWGuideBTagMCTools which determines the MC truth flavor of a jet. The algorithmic definition of the jet flavor is used by default for all b-tagging purposes. In case you are using PAT, you can get the jet flavor using the PAT jet partonFlavour() method which is already configured to use the algorithmic definition. The jet flavor is defined using the standard PDG MC particle numbering scheme as shown in the table below.

Jet flavor PDG ID returned by partonFlavour()
b 5
charm 4
light quarks (d,u,s) 1,2,3
gluon 21
undefined 0

Warning, important NOTE: Note that some jets will have an undefined MC truth flavor. This simply means that there were no partons found within ΔR<0.3 from the jet axis and the jet flavor algorithm failed to assign a definite flavor to the jet. Such jets have a relatively soft p<sub>T</sub> spectrum (most of them have p<sub>T</sub><~15 GeV), which is expected considering the fact that many of these jets originate from pileup interactions and that no generator particles corresponding to pileup interactions are stored in the event. The main question, however, is how to treat such jets when determining the b-tagging efficiencies or applying the scale factors. Luckily, for any realistic requirement on the minimum jet p<sub>T</sub> (p<sub>T</sub>>~30 GeV or so), the fraction of jets with undefined jet flavor should be at a percent level or less, depending on the exact jet selection applied. Hence, it should be safe to either include such jets in the light flavor category or to ignore them altogether, both when determining the b-tagging efficiencies and applying the scale factors.

Warning, important NOTE: Although the light quark and gluon jets have traditionally been put together into the same light flavor category, it has been observed that is MC events with many pileup interactions majority of the pileup jets get assigned the gluon flavor. Since the b-tagging efficiency for the pileup jets is generally low, these pileup jet bias the overall b-tagging efficiency for gluon jets to values lower than the real value. Until a better solution is found, analysts are advised to split light flavor jets into separate "uds" and "g" categories and should keep in mind that the b-tagging efficiency for low-p<sub>T</sub> gluon jets might be biased by the pileup jets.

Methods to Apply b-Tagging Efficiency Scale Factors

BTV POG measures the b-tagging efficiency scale factors ($ \text{SF}= \varepsilon_{\text{DATA}}/\varepsilon_{\text{MC}} $) for b and light flavor jets. The scale factors in general depend on the jet flavor, jet $ p_{\text{T}} $, and jet $ \eta $. Scale factors for charm jets can be taken to be the same as for b jets as long as there are no dedicated scale factor measurements for charm jets. Since the b-tagging efficiencies measured in data are somewhat different than those predicted by the simulation, the scale factors need to be applied to simulated events to take this difference into account. This TWiki page summarizes a few different methods for applying the scale factors to MC-simulated events.

b-tag SF methods can be grouped into two general categories, methods that involve event reweighting and those that do not. Since most methods require the knowledge of the MC b-tagging efficiencies, which depends on the event kinematics, it is important to emphasize that the BTV POG only provides the scale factors and it is the analysts' responsibility to compute the b-tagging efficiencies for each jet flavor in their signal and background MC samples before applying the scale factors. More information on how to compute the b-tagging efficiency in MC samples is given at the bottom of the page. Which method to apply is left to analysts to decide based on what works best in their specific use case.

Warning, important NOTE: In all of the methods described below it is only necessary to use jets which are considered for b tagging in your analysis. For example, if the analysis uses jets with p<sub>T</sub>>30 GeV, it is safe to ignore jets with p<sub>T</sub><30 GeV when applying the scale factors. Using all the jets in the event would unnecessarily complicate the procedure. Also, please don't confuse the terms "b jet" and "b-tagged jet". The former refers to a jet with the MC truth b flavor while the latter refers to a b-tagged jet of any flavor.

1) Methods with event reweighting

1a) Event reweighting using scale factors and MC b-tagging efficiencies

The goal of this method is to predict the correct event yield in data by only changing the weight of the selected MC events, i.e., MC events that did not pass the selection do not need to be added back. This way there will be no problems with undefined variables in the later steps of the analysis (e.g., the mass or decay length of a secondary vertex if the vertex was not reconstructed, etc.). It is important to point out that with this method there is no migration of events from one b-tag multiplicity bin to the other, where the same event can contribute with different events weights to multiple b-tag multiplicity bins, i.e., MC events with $ n $ b tags will continue to have $ n $ b tags.

The probability of a given configuration of jets in MC simulation and data is defined as

\[ P(\text{MC})=\prod_{i=\text{tagged}} \varepsilon_i \prod_{j=\text{not tagged}} (1-\varepsilon_j) \]

\[ P(\text{DATA})=\prod_{i=\text{tagged}} \text{SF}_i \varepsilon_i \prod_{j=\text{not tagged}} (1-\text{SF}_j \varepsilon_j) \]

where $ \varepsilon_i $ is the MC b-tagging efficiency, and $ \text{SF}_i $ and $ \varepsilon_i $ are, as usual, functions of the jet flavor, jet $ p_\text{T} $, and jet $ \eta $. The event weight is now calculated as

\[ w=\frac{P(\text{DATA})}{P(\text{MC})} \]

So the logic of the method is relatively simple and it works for an arbitrary configuration of flavors and b tags in the event.

Extension to multiple operating points

When multiple operating points are used in an analysis, the “tagged” or “not tagged” categories become more complex as a given jet could be tagged “loose” ($ L $) but not "tight" ($ T $). In a case with two operating point, $ L $ and $ T $, the event probabilities become

\[ P(\text{MC})=\prod_{i=\text{tagged }T} \varepsilon_i^T \prod_{j=\text{tagged }L\text{, not }T} (\varepsilon_j^L-\varepsilon_j^T) \prod_{k=\text{not tagged}} (1-\varepsilon_k^L) \]

\[ P(\text{DATA})=\prod_{i=\text{tagged }T} \text{SF}_i^T\varepsilon_i^T \prod_{j=\text{tagged }\text{L, not }T} (\text{SF}_j^L\varepsilon_j^L-\text{SF}_j^T\varepsilon_j^T) \prod_{k=\text{not tagged}} (1-\text{SF}_k^L\varepsilon_k^L) \]

In a more general case with $ N $ operating points, we can write

\[ P(\text{MC})=\prod_{J=0}^N \prod_{i=\text{tagged }J\text{, not }J+1} (\varepsilon_i^J-\varepsilon_i^{J+1}) \]

\[ P(\text{DATA})=\prod_{J=0}^N \prod_{i=\text{tagged }J\text{, not }J+1} (\text{SF}_i^J\varepsilon_i^J-\text{SF}_i^{J+1}\varepsilon_i^{J+1}) \]

where $ \text{SF}_i^\text{J} $ is the scale factor for the operating point $ J $ and jet $ i $, the product over the operating points should be consider as starting from $ J=0 $ with $ \varepsilon_i^0=1 $ and $ \text{SF}_i^0=1 $, and $ \varepsilon_i^{N+1}=0 $.

1b) Event reweighting using scale factors and MC b-tagging efficiencies ignoring the jet b-tagging status

The goal of this method is also to predict the correct event yield in data but ignoring the jet b-tagging status. This is achieved by using a sum of the event probabilities, similar to those introduced in the previous method, as the event weight. Since the jet b-tagging status is ignored, each event can contribute to multiple b-tag multiplicity bins, where different jet configurations within the same b-tag multiplicity bins get different event probabilities. As in method 1a), in order to apply this method it is necessary to know MC b-tagging efficiencies. The primary purpose of this method is to predict the correct event yields in different b-tag multiplicity bins but all b-tag-related variables for individual jets become ill-defined.

The event weight for 0 b tags is defined as

\[ w(\text{0 b tags}) = \prod_i (1-P_i) \]

where the product runs over all reconstructed jets considered for b tagging and $ P_i $ is the probability to b-tag jet $ i $ defined as

\[ P_i = \text{SF}_i \varepsilon_i \]

where $ \varepsilon_i $ is the MC b-tagging efficiency, and $ \text{SF}_i $ and $ \varepsilon_i $ are functions of the jet flavor, jet $ p_\text{T} $, and jet $ \eta $. The probability $ P_i $ is not allowed to be greater than 1. In a similar fashion, the event weight for 1 b tag is defined as

\[ w(\text{1 b tag}) = \sum_i \left[P_i \prod_j (1-P_j)\right] \text{ with } j \neq i \]

for 2 b tags as

\[ w(\text{2 b tags}) = \sum_i \sum_j \left[P_i P_j \prod_k (1-P_k)\right] \text{ with } j &amp;gt; i \text{ and } k \neq i,j \]

etc. For inclusive requirements on the number of b tags, one gets the following event weights

\[ w({\geq}\text{1 b tag}) = 1 - w(\text{0 b tags}) \]

\[ w({\geq}\text{2 b tags}) = 1 - w(\text{0 b tags}) - w(\text{1 b tag}) \]

\[ w({\geq}\text{3 b tags}) = 1 - w(\text{0 b tags}) - w(\text{1 b tag}) - w(\text{2 b tags}) \]

etc.

1c) Event reweighting using scale factors only

As with the previous methods, the goal of this method is to predict the correct event yield in data but using only the scale factors and without having to know MC b-tagging efficiencies. This is achieved by using the scale factors as pseudo-probabilities (because the scale factors can be greater than 1) in order to calculate the event weights. One obvious advantage of this method is the fact that it does not require any knowledge of MC b-tagging efficiencies. However, a complication that this method introduces is that the same event, with $ n $ b tags, can now contribute to any b-tag multiplicity bin for which the number of b tags $ m\leq n $. The method is also not be suitable for analyses that look at any of the variables that might become ill-defined in this approach (more on this below). In addition, the method is mostly suitable for relatively simple jet configurations, such as b-tagging of the leading two jet and similar.

The method will be illustrated on a simple example in which only the leading two jets are considered for b tagging. As already mentioned, the scale factor are used as pseudo-probabilities which are applied only to b-tagged jet. An event in which both of the leading two jets are b-tagged can contribute to events with 2, 1, and 0 b tags with the following event weights

\[ w(2|2) = \text{SF}_1\text{SF}_2 \]

\[ w(1|2) = (1-\text{SF}_1)\text{SF}_2 + \text{SF}_1(1-\text{SF}_2) \]

\[ w(0|2) = (1-\text{SF}_1)(1-\text{SF}_2) \]

where $ w(n|m) $ ($ n\leq m $) is the event weight for an event with $ m $ b tags to contribute to events with $ n $ b tags, and $ \text{SF}_1 $ and $ \text{SF}_2 $ are the scale factors for the leading and second leading jet, respectively. As usual, the scale factors depend on the jet flavor, jet $ p_\text{T} $, and jet $ \eta $. Similarly, an event in which only one of the leading two jets is b-tagged can contribute to events with 1 and 0 b tags with the following event weights

\[ w(1|1) = \text{SF} \]

\[ w(0|1) = (1-\text{SF}) \]

while event with 0 b-tagged jets can only contribute to events with 0 b tags with an event weight of 1, i.e.,

\[ w(0|0) = 1 \]

Upon more careful inspection one can notice that this methods keeps the overall normalization of the event sample unchanged, which follows from

\[ \sum_{i=0}^n w(i|n) = 1 \]

and therefore only changes the event yields in different b-tag multiplicity bins. It is therefore suitable for getting the correct event yields in different b-tag multiplicity bins. It will also produce well defined distributions of b-tag-related variables for the leading two jets in events with 2 b tags. However, the b-tag-related variables for the leading two jets in events with 1 or 0 b tags might become ill-defined (e.g., events with 0 b tags will get contribution from events with 2 b tags which will result in ill-defined b-tag discriminator distributions for the leading two jets). Also, the $ p_\text{T} $ distribution of the b-tagged jet in 1-tag events becomes ill-defined, etc.

In order to see that the method gives the correct event yields, even for $ \text{SF}&amp;gt;1 $, one can compare the event probabilities in MC simulation, defined as

\[ P_2(\text{MC}) = \varepsilon_1\varepsilon_2 \]

\[ P_1(\text{MC}) = \varepsilon_1(1-\varepsilon_2) + \varepsilon_2(1-\varepsilon_1) \]

\[ P_0(\text{MC}) = (1-\varepsilon_1)(1-\varepsilon_2) \]

with those in data, defined as

\[ P_2(\text{DATA}) = \text{SF}_1\varepsilon_1\text{SF}_2\varepsilon_2 \]

\[ P_1(\text{DATA}) = \text{SF}_1\varepsilon_1(1-\text{SF}_2\varepsilon_2) + \text{SF}_2\varepsilon_2(1-\text{SF}_1\varepsilon_1) \]

\[ P_0(\text{DATA}) = (1-\text{SF}_1\varepsilon_1)(1-\text{SF}_2\varepsilon_2) \]

and notice that the corrected MC event probabilities

\[ P_2^\text{corr}(\text{MC}) = \varepsilon_1\varepsilon_2\text{SF}_1\text{SF}_2 \]

\[ P_1^\text{corr}(\text{MC}) = \varepsilon_1\varepsilon_2(1-\text{SF}_1)\text{SF}_2 + \varepsilon_1\varepsilon_2\text{SF}_1(1-\text{SF}_2) + \varepsilon_1(1-\varepsilon_2)\text{SF}_1 + \varepsilon_2(1-\varepsilon_1)\text{SF}_2 \]

\[ P_0^\text{corr}(\text{MC}) = \varepsilon_1\varepsilon_2(1-\text{SF}_1)(1-\text{SF}_2) + \varepsilon_1(1-\varepsilon_2)(1-\text{SF}_1) + \varepsilon_2(1-\varepsilon_1)(1-\text{SF}_2) + (1-\varepsilon_1)(1-\varepsilon_2) \]

(after working out some algebra) match exactly those in data. The method can be naturally extended to more complicated jet configurations but it quickly gets quite convoluted. Nevertheless, there are cases where the method remains relatively simple even for an arbitrary number of b-tagged jets, again assuming that the event yield is of primary interest and other distributions that become ill-defined are not used. One such case corresponds to events with at least 1 b tag for which the event weight is defined as

\[ w(\geq 1|n) = 1 - w(0|n) \]

where

\[ w(0|n) = \prod_{i=1}^n (1-\text{SF}_i) \]

Another, slightly more complicated, case corresponds to events with at least 2 b tags for which the event weight is defined as

\[ w(\geq 2|n) = 1 - w(0|n) - w(1|n) \]

where

\[ w(1|n) = \sum_{j=1}^n \left[ \prod_{{\begin{subarray}{l} i=1 \\ i\neq j \end{subarray}}}^{n} (1-\text{SF}_i) \right] \text{SF}_j \]

which can be naturally extended to higher b-tag multiplicities.

2) Methods without event reweighting

2a) Jet-by-jet updating of the b-tagging status

In this method instead of calculating the event weights, scale factors are used to update the b-tagging status on a jet-by-jet basis. In order to upgrade or downgrade the b-tagging status of each individual jet, a random number generator is utilized. The main advantage of this method is the fact that after the b-tagging status has been updated, the simulated events can be used just like data and there is no need to apply any event weights. However, just like the methods 1b) and 1c), this method is not suitable for analyses that look at any of the variables that might become ill-defined after the application of this method (more on this below). One important aspect of this method is reproducibility and it is therefore important to always initialize the random number generator with the same random seed in the same event, irrespective of the order in which the events are processed. Similarly to the methods 1a) and 1b), this method also requires MC b-tagging efficiencies, although strictly speaking it only requires them when $ \text{SF}&amp;gt;1 $.

In its simplest form with a single operating point being used, the logic of this method is relatively simple. If $ \text{SF}&amp;lt;1 $, all that need to be done is to downgrade fraction

\[ f=1-\text{SF} \]

of the b-tagged jets from the "tagged" status to the "not tagged" status, and in this case it is not necessary to know the MC b-tagging efficiency. If, on the other hand, $ \text{SF}&amp;gt;1 $, it is necessary to upgrade the b-tagging status of some of the untagged jets and the fraction of such jets that needs to be upgraded is

\[ f=\frac{1-\text{SF}}{1-1/\varepsilon_\text{MC}} \]

This result follows from a simple requirement that $ f(1-\varepsilon_\text{MC})+\varepsilon_\text{MC}=\text{SF}\varepsilon_\text{MC} $. It is important to emphasize that as long as $ \text{SF}&amp;lt;1 $, this method will produce well defined distributions of b-tag-related variables for all b-tagged jets, but not the untagged ones. For $ \text{SF}&amp;gt;1 $, this method will produce ill-defined distributions of b-tag-related variables even for b-tagged jets (e.g., the vertex mass for b-tagged jets becomes ill-defined since upgrading the b-tagging status of an untagged jet does not create secondary vertices). Since scale factors can start below 1 and go above 1 (and vice versa) as a function of the jet $ p_\text{T} $ or $ \eta $ or can go above 1 when varied by +1$ \sigma $, where $ \sigma $ is the measured uncertainty in $ \text{SF} $, some care is needed when looking at variables which might become ill-defined.

Extension to two operating points

Let's consider a b-tagging algorithm with two operating points, say "loose" ($ L $) and "tight" ($ T $), each with its own efficiency and scale factor. If $ \text{SF}^T&amp;lt;1 $ and $ \text{SF}^L&amp;lt;1 $, we first adjust the tight b-tagging efficiency by removing the tight tag from a fraction

\[ f_T=\frac{\varepsilon_\text{MC}^T-\varepsilon_\text{DATA}^T}{\varepsilon_\text{MC}^T}=1-\text{SF}^T \]

of all tight tagged jets. These jets retain their loose b tags. We now have to remove a fraction of the loose tags. The probability that a jet has a loose tag but not a tight tag is $ \varepsilon_\text{MC}^L-\varepsilon_\text{DATA}^T $ (this includes the jets that lost their tight tag in the previous step) and we want it to be $ \varepsilon_\text{DATA}^L-\varepsilon_\text{DATA}^T $. We therefore have to remove the loose tag from a fraction of these jets

\[ f_L=\frac{\varepsilon_\text{MC}^L-\varepsilon_\text{DATA}^L}{\varepsilon_\text{MC}^L-\varepsilon_\text{DATA}^T}=\frac{1-\text{SF}^L}{1-(\varepsilon_\text{MC}^T/\varepsilon_\text{MC}^L)\text{SF}^T} \]

If $ \text{SF}^T&amp;lt;1 $ and $ \text{SF}^L&amp;gt;1 $, we use the same method as above to correct the tight tags

\[ f_T=1-\text{SF}^T \]

We now have to add loose tags to a fraction of the untagged jets. The probability for a jet to be untagged is $ 1-\varepsilon_\text{MC}^L $ and we want it to be $ 1-\varepsilon_\text{DATA}^L $. That means we have to promote a fraction

\[ f_L=\frac{\varepsilon_\text{DATA}^L-\varepsilon_\text{MC}^L}{1-\varepsilon_\text{MC}^L}=\frac{\text{SF}^L-1}{1/\varepsilon_\text{MC}^L-1} \]

of all untagged jets to loose tags.

If $ \text{SF}^T&amp;gt;1 $ and $ \text{SF}^L&amp;gt;1 $, we first add loose tags to a fraction of the untagged jets. The fraction is the same as above

\[ f_L=\frac{\text{SF}^L-1}{1/\varepsilon_\text{MC}^L-1} \]

Next we have to add tight tags to some jets that have only a loose tag (including the ones that were promoted in the previous step). The fraction of such jets is $ \varepsilon_\text{DATA}^L-\varepsilon_\text{MC}^T $ and it should be $ \varepsilon_\text{DATA}^L-\varepsilon_\text{DATA}^T $. Therefore, we have to add a tight tag to a fraction

\[ f_T=\frac{\varepsilon_\text{DATA}^T-\varepsilon_\text{MC}^T}{\varepsilon_\text{DATA}^L-\varepsilon_\text{MC}^T}=\frac{\text{SF}^T-1}{(\varepsilon_\text{MC}^L/\varepsilon_\text{MC}^T)\text{SF}^T -1} \]

of these jets.

If $ \text{SF}^T&amp;gt;1 $ and $ \text{SF}^L&amp;lt;1 $, we have to add tight tags to some jets that have only a loose tag. The fraction of such jets is $ \varepsilon_\text{MC}^L-\varepsilon_\text{MC}^T $ and it should be $ \varepsilon_\text{MC}^L-\varepsilon_\text{DATA}^T $. Therefore we have to add a tight tag to a fraction

\[ f_T=\frac{\varepsilon_\text{DATA}^T-\varepsilon_\text{MC}^T}{\varepsilon_\text{MC}^L-\varepsilon_\text{MC}^T}=\frac{\text{SF}^T-1}{(\varepsilon_\text{MC}^L/\varepsilon_\text{MC}^T)-1} \]

of these jets. We now have to remove a fraction of the loose tags. The probability that a jet has a loose tag but not a tight tag is $ \varepsilon_\text{MC}^L-\varepsilon_\text{DATA}^T $ and we want it to be $ \varepsilon_\text{DATA}^L-\varepsilon_\text{DATA}^T $. We therefore have to remove the loose tag from a fraction

\[ f_L=\frac{\varepsilon_\text{MC}^L-\varepsilon_\text{DATA}^L}{\varepsilon_\text{MC}^L-\varepsilon_\text{DATA}^T}=\frac{1-\text{SF}^L}{1-(\varepsilon_\text{MC}^T/\varepsilon_\text{MC}^L)\text{SF}^L} \]

of the these jets.

Topic attachments
I Attachment History Action Size Date Who Comment
Unknown file formatcsv CSV.csv r1 manage 31.8 K 2016-04-12 - 12:14 PetraVanMulders  
Edit | Attach | Watch | Print version | History: r5 < r4 < r3 < r2 < r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r5 - 2016-04-12 - PetraVanMulders
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    CMSPublic All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback