#include "TFile.h" #include "TH2D.h" #include <iostream> #include <fstream> #include <iomanip> #include <vector> #include <algorithm> #include "TROOT.h" #include "TKey.h" #include "TIterator.h" #include <string> /* ...................................................................... Author: Hella Snoek (hella.snoek@cern.ch) Date: 22.07.2014 Simple ROOT analysis code to analyse the pixel hit maps for - DEAD: no hits - HOT: too many hits - LOW: too few hits pixel hits. A pixel cell is compared to its 8 neighbouring (exception for pixel on the edge below) pixel cells. The 2 highest and 2 lowest hit counts are removed before making an average of the surrounding pixel cells. The minimum required count in a cell for the analysis is 20. A HOT cell is 40 times higher than the average. A LOW cell is 4 std deviations (sqrt) lower. For the cells on the edge of the sensor the highest and lowest hits are not removed for the average. ...................................................................... */ using namespace std; void PixelMapAnalysis(TH2D* hist, unsigned int plane, ostream& os = std::cout ){ for (int col=0;col<256;col++){ for (int row=0;row<256;row++) { double count = hist->GetBinContent(col+1,row+1); vector<double> neighbours; for( int i = 0 ; i < 3; i++) { for(int j=0; j < 3; j++) { if( i == 1 && j == 1) continue; neighbours.push_back( hist->GetBinContent( col +i, row +j )); } } double total(0.); if (col>0&&col<255&&row>0&&row<255) { for (uint i=2;i<neighbours.size()-2;i++) total=total+neighbours[i]; if (count >10*total) os << plane << " "<< col << " "<< row << endl; } else { for (uint i=0;i<neighbours.size();i++) total=total+neighbours[i]; if (count >10*total) os << plane << " "<< col << " "<< row << endl; } } } }