CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes
SiStripBadAPVAlgorithmFromClusterOccupancy Class Reference

#include <CalibTracker/SiStripQuality/src/SiStripBadAPVAlgorithmFromClusterOccupancy.cc>

Classes

struct  Apv
 
struct  pHisto
 

Public Types

typedef SiStrip::QualityHistosMap HistoMap
 

Public Member Functions

void extractBadAPVs (SiStripQuality *, HistoMap &, edm::ESHandle< SiStripQuality > &)
 
void setAbsoluteLowThreshold (long double absolute_low)
 
void setAbsoluteOccupancyThreshold (long double occupancy)
 
void setHighOccupancyThreshold (long double high_occupancy)
 
void setLowOccupancyThreshold (long double low_occupancy)
 
void setMinNumOfEvents ()
 
void setNumberIterations (int number_iterations)
 
void setNumberOfEvents (double Nevents)
 
void setOutputFileName (std::string OutputFileName, bool WriteOutputFile)
 
void setTrackerGeometry (const TrackerGeometry *tkgeom)
 
 SiStripBadAPVAlgorithmFromClusterOccupancy (const edm::ParameterSet &, const TrackerTopology *)
 
virtual ~SiStripBadAPVAlgorithmFromClusterOccupancy ()
 

Private Member Functions

void AnalyzeOccupancy (SiStripQuality *, std::vector< Apv > &, std::pair< double, double > *, std::vector< unsigned int > &, edm::ESHandle< SiStripQuality > &)
 
void CalculateMeanAndRMS (const std::vector< Apv > &, std::pair< double, double > *, int)
 

Private Attributes

long double absolutelow_
 
int apv_number
 
double apvAbsoluteOccupancy
 
double apvMedianOccupancy
 
TTree * apvtree
 
uint32_t detrawid
 
int disc
 
TFile * f
 
float global_position_x
 
float global_position_y
 
float global_position_z
 
long double highoccupancy_
 
int isback
 
int isexternalstring
 
int isstereo
 
int iszminusside
 
int layer_ring
 
long double lowoccupancy_
 
std::pair< double, double > MeanAndRms_TECMinus_Disc1 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc2 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc3 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc4 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc5 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc6 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc7 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc8 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc9 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc1 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc2 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc3 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc4 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc5 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc6 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc7 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc8 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc9 [7]
 
std::pair< double, double > MeanAndRms_TIB_Layer1 [7]
 
std::pair< double, double > MeanAndRms_TIB_Layer2 [7]
 
std::pair< double, double > MeanAndRms_TIB_Layer3 [7]
 
std::pair< double, double > MeanAndRms_TIB_Layer4 [7]
 
std::pair< double, double > MeanAndRms_TIDMinus_Disc1 [7]
 
std::pair< double, double > MeanAndRms_TIDMinus_Disc2 [7]
 
std::pair< double, double > MeanAndRms_TIDMinus_Disc3 [7]
 
std::pair< double, double > MeanAndRms_TIDPlus_Disc1 [7]
 
std::pair< double, double > MeanAndRms_TIDPlus_Disc2 [7]
 
std::pair< double, double > MeanAndRms_TIDPlus_Disc3 [7]
 
std::pair< double, double > MeanAndRms_TOB_Layer1 [7]
 
std::pair< double, double > MeanAndRms_TOB_Layer2 [7]
 
std::pair< double, double > MeanAndRms_TOB_Layer3 [7]
 
std::pair< double, double > MeanAndRms_TOB_Layer4 [7]
 
std::pair< double, double > MeanAndRms_TOB_Layer5 [7]
 
std::pair< double, double > MeanAndRms_TOB_Layer6 [7]
 
std::vector< ApvmedianValues_TECMinus_Disc1
 
std::vector< ApvmedianValues_TECMinus_Disc2
 
std::vector< ApvmedianValues_TECMinus_Disc3
 
std::vector< ApvmedianValues_TECMinus_Disc4
 
std::vector< ApvmedianValues_TECMinus_Disc5
 
std::vector< ApvmedianValues_TECMinus_Disc6
 
std::vector< ApvmedianValues_TECMinus_Disc7
 
std::vector< ApvmedianValues_TECMinus_Disc8
 
std::vector< ApvmedianValues_TECMinus_Disc9
 
std::vector< ApvmedianValues_TECPlus_Disc1
 
std::vector< ApvmedianValues_TECPlus_Disc2
 
std::vector< ApvmedianValues_TECPlus_Disc3
 
std::vector< ApvmedianValues_TECPlus_Disc4
 
std::vector< ApvmedianValues_TECPlus_Disc5
 
std::vector< ApvmedianValues_TECPlus_Disc6
 
std::vector< ApvmedianValues_TECPlus_Disc7
 
std::vector< ApvmedianValues_TECPlus_Disc8
 
std::vector< ApvmedianValues_TECPlus_Disc9
 
std::vector< ApvmedianValues_TIB_Layer1
 
std::vector< ApvmedianValues_TIB_Layer2
 
std::vector< ApvmedianValues_TIB_Layer3
 
std::vector< ApvmedianValues_TIB_Layer4
 
std::vector< ApvmedianValues_TIDMinus_Disc1
 
std::vector< ApvmedianValues_TIDMinus_Disc2
 
std::vector< ApvmedianValues_TIDMinus_Disc3
 
std::vector< ApvmedianValues_TIDPlus_Disc1
 
std::vector< ApvmedianValues_TIDPlus_Disc2
 
std::vector< ApvmedianValues_TIDPlus_Disc3
 
std::vector< ApvmedianValues_TOB_Layer1
 
std::vector< ApvmedianValues_TOB_Layer2
 
std::vector< ApvmedianValues_TOB_Layer3
 
std::vector< ApvmedianValues_TOB_Layer4
 
std::vector< ApvmedianValues_TOB_Layer5
 
std::vector< ApvmedianValues_TOB_Layer6
 
double minNevents_
 
int module_number
 
double Nevents_
 
int number_apvs
 
int number_strips
 
int numberiterations_
 
long double occupancy_
 
std::string OutFileName_
 
SiStripQualitypQuality
 
int rodstringpetal
 
std::stringstream ss
 
double stripOccupancy [6][128]
 
double stripWeight [6][128]
 
int subdetid
 
const TrackerGeometryTkGeom
 
const TrackerTopologytTopo
 
bool UseInputDB_
 
bool WriteOutputFile_
 

Detailed Description

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 41 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

Member Typedef Documentation

Definition at line 44 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

Constructor & Destructor Documentation

SiStripBadAPVAlgorithmFromClusterOccupancy::SiStripBadAPVAlgorithmFromClusterOccupancy ( const edm::ParameterSet iConfig,
const TrackerTopology theTopo 
)
SiStripBadAPVAlgorithmFromClusterOccupancy::~SiStripBadAPVAlgorithmFromClusterOccupancy ( )
virtual

Member Function Documentation

void SiStripBadAPVAlgorithmFromClusterOccupancy::AnalyzeOccupancy ( SiStripQuality quality,
std::vector< Apv > &  medianValues,
std::pair< double, double > *  MeanAndRms,
std::vector< unsigned int > &  BadStripList,
edm::ESHandle< SiStripQuality > &  InSiStripQuality 
)
private
void SiStripBadAPVAlgorithmFromClusterOccupancy::CalculateMeanAndRMS ( const std::vector< Apv > &  a,
std::pair< double, double > *  MeanRMS,
int  number_iterations 
)
private
void SiStripBadAPVAlgorithmFromClusterOccupancy::extractBadAPVs ( SiStripQuality siStripQuality,
HistoMap DM,
edm::ESHandle< SiStripQuality > &  inSiStripQuality 
)
void SiStripBadAPVAlgorithmFromClusterOccupancy::setAbsoluteLowThreshold ( long double  absolute_low)
inline

Definition at line 52 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

void SiStripBadAPVAlgorithmFromClusterOccupancy::setAbsoluteOccupancyThreshold ( long double  occupancy)
inline

Definition at line 54 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

void SiStripBadAPVAlgorithmFromClusterOccupancy::setHighOccupancyThreshold ( long double  high_occupancy)
inline

Definition at line 51 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

void SiStripBadAPVAlgorithmFromClusterOccupancy::setLowOccupancyThreshold ( long double  low_occupancy)
inline

Definition at line 50 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

void SiStripBadAPVAlgorithmFromClusterOccupancy::setMinNumOfEvents ( )
void SiStripBadAPVAlgorithmFromClusterOccupancy::setNumberIterations ( int  number_iterations)
inline

Definition at line 53 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

void SiStripBadAPVAlgorithmFromClusterOccupancy::setNumberOfEvents ( double  Nevents)
inline

Definition at line 55 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

void SiStripBadAPVAlgorithmFromClusterOccupancy::setOutputFileName ( std::string  OutputFileName,
bool  WriteOutputFile 
)
inline

Definition at line 57 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

void SiStripBadAPVAlgorithmFromClusterOccupancy::setTrackerGeometry ( const TrackerGeometry tkgeom)
inline

Definition at line 58 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

Member Data Documentation

long double SiStripBadAPVAlgorithmFromClusterOccupancy::absolutelow_
private

Definition at line 86 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

int SiStripBadAPVAlgorithmFromClusterOccupancy::apv_number
private
double SiStripBadAPVAlgorithmFromClusterOccupancy::apvAbsoluteOccupancy
private
double SiStripBadAPVAlgorithmFromClusterOccupancy::apvMedianOccupancy
private
TTree* SiStripBadAPVAlgorithmFromClusterOccupancy::apvtree
private
uint32_t SiStripBadAPVAlgorithmFromClusterOccupancy::detrawid
private
int SiStripBadAPVAlgorithmFromClusterOccupancy::disc
private
TFile* SiStripBadAPVAlgorithmFromClusterOccupancy::f
private
float SiStripBadAPVAlgorithmFromClusterOccupancy::global_position_x
private
float SiStripBadAPVAlgorithmFromClusterOccupancy::global_position_y
private
float SiStripBadAPVAlgorithmFromClusterOccupancy::global_position_z
private
long double SiStripBadAPVAlgorithmFromClusterOccupancy::highoccupancy_
private

Definition at line 85 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

int SiStripBadAPVAlgorithmFromClusterOccupancy::isback
private
int SiStripBadAPVAlgorithmFromClusterOccupancy::isexternalstring
private
int SiStripBadAPVAlgorithmFromClusterOccupancy::isstereo
private
int SiStripBadAPVAlgorithmFromClusterOccupancy::iszminusside
private
int SiStripBadAPVAlgorithmFromClusterOccupancy::layer_ring
private
long double SiStripBadAPVAlgorithmFromClusterOccupancy::lowoccupancy_
private

Definition at line 84 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc1[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc2[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc3[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc4[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc5[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc6[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc7[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc8[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc9[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc1[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc2[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc3[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc4[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc5[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc6[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc7[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc8[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc9[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TIB_Layer1[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TIB_Layer2[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TIB_Layer3[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TIB_Layer4[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TIDMinus_Disc1[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TIDMinus_Disc2[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TIDMinus_Disc3[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TIDPlus_Disc1[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TIDPlus_Disc2[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TIDPlus_Disc3[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TOB_Layer1[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TOB_Layer2[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TOB_Layer3[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TOB_Layer4[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TOB_Layer5[7]
private
std::pair<double,double> SiStripBadAPVAlgorithmFromClusterOccupancy::MeanAndRms_TOB_Layer6[7]
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc1
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc2
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc3
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc4
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc5
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc6
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc7
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc8
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc9
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc1
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc2
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc3
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc4
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc5
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc6
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc7
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc8
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc9
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TIB_Layer1
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TIB_Layer2
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TIB_Layer3
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TIB_Layer4
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TIDMinus_Disc1
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TIDMinus_Disc2
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TIDMinus_Disc3
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TIDPlus_Disc1
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TIDPlus_Disc2
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TIDPlus_Disc3
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TOB_Layer1
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TOB_Layer2
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TOB_Layer3
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TOB_Layer4
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TOB_Layer5
private
std::vector<Apv> SiStripBadAPVAlgorithmFromClusterOccupancy::medianValues_TOB_Layer6
private
double SiStripBadAPVAlgorithmFromClusterOccupancy::minNevents_
private

Definition at line 90 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

int SiStripBadAPVAlgorithmFromClusterOccupancy::module_number
private
double SiStripBadAPVAlgorithmFromClusterOccupancy::Nevents_
private

Definition at line 88 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

int SiStripBadAPVAlgorithmFromClusterOccupancy::number_apvs
private
int SiStripBadAPVAlgorithmFromClusterOccupancy::number_strips
private
int SiStripBadAPVAlgorithmFromClusterOccupancy::numberiterations_
private

Definition at line 87 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

long double SiStripBadAPVAlgorithmFromClusterOccupancy::occupancy_
private

Definition at line 89 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

std::string SiStripBadAPVAlgorithmFromClusterOccupancy::OutFileName_
private

Definition at line 91 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

SiStripQuality* SiStripBadAPVAlgorithmFromClusterOccupancy::pQuality
private

Definition at line 97 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

int SiStripBadAPVAlgorithmFromClusterOccupancy::rodstringpetal
private
std::stringstream SiStripBadAPVAlgorithmFromClusterOccupancy::ss
private
double SiStripBadAPVAlgorithmFromClusterOccupancy::stripOccupancy[6][128]
private

Definition at line 99 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

double SiStripBadAPVAlgorithmFromClusterOccupancy::stripWeight[6][128]
private
int SiStripBadAPVAlgorithmFromClusterOccupancy::subdetid
private
const TrackerGeometry* SiStripBadAPVAlgorithmFromClusterOccupancy::TkGeom
private

Definition at line 94 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

const TrackerTopology* SiStripBadAPVAlgorithmFromClusterOccupancy::tTopo
private

Definition at line 95 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

bool SiStripBadAPVAlgorithmFromClusterOccupancy::UseInputDB_
private

Definition at line 93 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.

bool SiStripBadAPVAlgorithmFromClusterOccupancy::WriteOutputFile_
private

Definition at line 92 of file SiStripBadAPVAlgorithmFromClusterOccupancy.h.