Atlas MDT Dead Elements Analysis
The search for dead elements in a MDT chamber is handled by the code described in this page.
Dead elements are searched for in order of decreasing complexity (multi-layers, layers, mezzanines, tubes).
The algorithm
The basic idea of the algorithm is that the hit map of a MDT layer is
smooth and is normally well described by a polynomial of low degree
(say 3rd degree). A dead tube would result in a fit failure. Thus the first
step of the algorithm is trying to fit a (portion of a) layer with a Pol3 function.
A bad chi**2 would be a first indication of a dead tube. See below a
failing fit due to the presence of a dead tube. Before trying a fit
procedure the error of a '0 content' bin is set to 2.3 because fitters normally
discard bins with 0 statistical error.
Standard Pol3 fit fails in presence of a dead tube
If a fit returns a bad chi**2 value then the method scans
Pol3 fit succeeds if the tube is removed from the fit
Pol3 + gap describes well a dead tube
The I/O dialogue
is realised by using three different histograms:
- idh1 contains the hit map of a MDT chamber. There is one bin for each channel including cut-outs. The hit map is created using hits which pass an cut of 100 adc counts to limit the presence of noisy channels;
- idh2 contains the structure of the chamber (see below) and tells where different layers/multi layers start/end. It also contains the information of known dead tubes;
- idh3 is a modification of idh2 described before. Every time one dead tube (or a sequence of dead tubes) is found the corrisponding bin (bins) are modified according to table below.
MDTDeadElementsAnalysis::deadElementsAnalysis(
TH1F* idh1,
TH1F* HRef,
TH1F* deadTubesMap, int nlayers_ml, string chambname)
Structure of MDT Dead Elements Analysis is listed below
void MDTDeadElementsAnalysis::deadElementsAnalysis(TH1F* idh1, TH1F* HRef, TH1F* deadTubesMap, int nlayers_ml, string chambname){
MDTDeadElementsAnalysis mdtTubeAna = new MDTDeadElementsAnalysis;
mdtTubeAna->getBasicGeometry(HRef,nlayers_ml,chambname);
// CLEAR ALL Lists :
mdtTubeAna->ClearList();
int total_bins= (int) idh1->GetNbinsX();
mdtTubeAna->Clear(total_bins);
mdtTubeAna->deadChambers(idh1,HRef, deadTubesMap, chambname);
mdtTubeAna->deadMultilayers(idh1,HRef, deadTubesMap, chambname);
mdtTubeAna->deadLayers(idh1,HRef, deadTubesMap, chambname);
mdtTubeAna->deadMezzanines(idh1,HRef, deadTubesMap, chambname);
mdtTubeAna->deadTubes(idh1,HRef, deadTubesMap, chambname);
if(verbose) mdtTubeAna->printSummary() ;
if(writeResultsToAsciFile){
cout<<" Writing to Asci File "<printSummaryToAsciFile() ;}
if(verbose) deadTubesMap->Draw();
}// deadElementsAnalysis
Dead Chambers
Dead Multi Layers
Dead Layers
Dead Mezzanines
Dead Tubes
--
BaroncelliToni - 21 Nov 2008