|
ROOT 6.18/05 Reference Guide |
Namespace for new ROOT classes and functions. More...
Namespaces | |
| namespace | CocoaTutorials |
| namespace | Detail |
| namespace | ExecutorUtils |
| This namespace contains pre-defined functions to be used in conjuction with TExecutor::Map and TExecutor::MapReduce. | |
| namespace | Experimental |
| namespace | Fit |
| Namespace for the fitting classes. | |
| namespace | GLTutorials |
| namespace | Internal |
| namespace | MacOSX |
| namespace | Math |
| namespace | MathMore |
| namespace | Meta |
| namespace | Minuit |
| namespace | Minuit2 |
| namespace | option |
| The namespace of The Lean Mean C++ Option Parser. | |
| namespace | Quartz |
| namespace | R |
| namespace associated R package for ROOT. | |
| namespace | RDF |
| namespace | TF1Helper |
| namespace | TMetaUtils |
| namespace | TreeUtils |
| namespace | TThreadedObjectUtils |
| namespace | TypeTraits |
| ROOT type_traits extensions. | |
| namespace | v5 |
| namespace | VecOps |
Classes | |
| struct | RCompressionSetting |
| The global settings depend on a global variable named R__ZipMode which can be modified by a global function named R__SetZipMode. More... | |
| class | RDataFrame |
ROOT's RDataFrame offers a high level interface for analyses of data stored in TTrees, CSV's and other data formats. More... | |
| class | TExecutor |
| This class defines an interface to execute the same task multiple times in parallel, possibly with different arguments every time. More... | |
| class | TGenericClassInfo |
| class | TIOFeatures |
TIOFeatures provides the end-user with the ability to change the IO behavior of data written via a TTree. More... | |
| class | TModuleGenerator |
| class | TProcessExecutor |
| This class provides a simple interface to execute the same task multiple times in parallel, possibly with different arguments every time. More... | |
| class | TReadLockGuard |
| class | TReentrantRWLock |
| class | TRWMutexImp |
| class | TRWSpinLock |
| class | TRWSpinLockReadGuard |
| class | TRWSpinLockWriteGuard |
| class | TSchemaRule |
| class | TSeq |
| A pseudo container class which is a generator of indices. More... | |
| class | TSequentialExecutor |
| class | TSpinMutex |
| A spin mutex class which respects the STL interface for mutexes. More... | |
| class | TThreadedObject |
| A wrapper to make object instances thread private, lazily. More... | |
| class | TThreadExecutor |
| This class provides a simple interface to execute the same task multiple times in parallel, possibly with different arguments every time. More... | |
| class | TTreeProcessorMP |
| This class provides an interface to process a TTree dataset in parallel with multi-process technology. More... | |
| class | TTreeProcessorMT |
| A class to process the entries of a TTree in parallel. More... | |
| class | TVirtualRWMutex |
| class | TWriteLockGuard |
Typedefs | |
| using | ColumnNames_t = ROOT::Detail::RDF::ColumnNames_t |
| using | ColumnNamesPtr_t = std::shared_ptr< const ColumnNames_t > |
| typedef void(* | DelArrFunc_t) (void *) |
| typedef void(* | DelFunc_t) (void *) |
| typedef void(* | DesFunc_t) (void *) |
| typedef void(* | DirAutoAdd_t) (void *, TDirectory *) |
| using | Double_v = Double_t |
| using | Float_v = Float_t |
| using | Int32_v = Int_t |
| using | Int_v = Int_t |
| typedef std::map< std::string, ROOT::Internal::TSchemaType > | MembersTypeMap_t |
| typedef Long64_t(* | MergeFunc_t) (void *, TCollection *, TFileMergeInfo *) |
| typedef void *(* | NewArrFunc_t) (Long_t size, void *arena) |
| typedef void *(* | NewFunc_t) (void *) |
| typedef void(* | ResetAfterMergeFunc_t) (void *, TFileMergeInfo *) |
| typedef std::map< std::string, std::list< SchemaRuleMap_t > > | SchemaRuleClassMap_t |
| typedef std::map< std::string, std::string > | SchemaRuleMap_t |
| typedef std::list< std::pair< ROOT::Internal::TSchemaType, std::string > > | SourceTypeList_t |
| using | TDataFrame = ROOT::RDataFrame |
| using | TSeqI = TSeq< int > |
| using | TSeqL = TSeq< long > |
| using | TSeqU = TSeq< unsigned int > |
| using | TSeqUL = TSeq< unsigned long > |
| using | UInt32_v = UInt_t |
| using | UInt_v = UInt_t |
Enumerations | |
| enum | ECompressionAlgorithm { kUseGlobalCompressionSetting = RCompressionSetting::EAlgorithm::kUseGlobal , kUseGlobalSetting = RCompressionSetting::EAlgorithm::kUseGlobal , kZLIB = RCompressionSetting::EAlgorithm::kZLIB , kLZMA = RCompressionSetting::EAlgorithm::kLZMA , kOldCompressionAlgo = RCompressionSetting::EAlgorithm::kOldCompressionAlgo , kLZ4 = RCompressionSetting::EAlgorithm::kLZ4 , kUndefinedCompressionAlgorithm = RCompressionSetting::EAlgorithm::kUndefined } |
| enum class | EFromHumanReadableSize { kSuccess , kParseFail , kOverflow } |
| enum | EFunctionMatchMode { kExactMatch = 0 , kConversionMatch = 1 } |
| enum class | EIOFeatures { kSupported = 0 } |
| enum | ESTLType { kNotSTL = 0 , kSTLvector = 1 , kSTLlist = 2 , kSTLdeque = 3 , kSTLmap = 4 , kSTLmultimap = 5 , kSTLset = 6 , kSTLmultiset = 7 , kSTLbitset = 8 , kSTLforwardlist = 9 , kSTLunorderedset = 10 , kSTLunorderedmultiset = 11 , kSTLunorderedmap = 12 , kSTLunorderedmultimap = 13 , kSTLend = 14 , kSTLany = 300 , kSTLstring = 365 } |
| enum | EThreadSlotReservation { kMaxUserThreadSlot = 20 , kPadThreadSlot = 20 , kClassThreadSlot = 21 , kDirectoryThreadSlot = 22 , kFileThreadSlot = 23 , kPerfStatsThreadSlot = 24 , kMaxThreadSlot = 25 } |
Functions | |
| void | AddClass (const char *cname, Version_t id, const std::type_info &info, DictFuncPtr_t dict, Int_t pragmabits) |
| Global function called by the ctor of a class's init class (see the ClassImp macro). More... | |
| void | AddClass (const char *cname, Version_t id, DictFuncPtr_t dict, Int_t pragmabits) |
| void | AddClassAlternate (const char *normName, const char *alternate) |
| Global function called by GenerateInitInstance. More... | |
| void | CallRecursiveRemoveIfNeeded (TObject &obj) |
| call RecursiveRemove for obj if gROOT is valid and obj.TestBit(kMustCleanup) is true. More... | |
| void | Class_ShowMembers (TClass *cl, const void *obj, TMemberInspector &) |
| Indirect call to the implementation of ShowMember allowing [forward] declaration with out a full definition of the TClass class. More... | |
| static UInt_t | ClassTableHash (const char *name, UInt_t size) |
| int | CompressionSettings (RCompressionSetting::EAlgorithm algorithm, int compressionLevel) |
| int | CompressionSettings (ROOT::ECompressionAlgorithm algorithm, int compressionLevel) |
| Deprecated name, do not use: More... | |
| TClass * | CreateClass (const char *cname, Version_t id, const char *dfil, const char *ifil, Int_t dl, Int_t il) |
| Global function called by a class' static Dictionary() method (see the ClassDef macro). More... | |
| TClass * | CreateClass (const char *cname, Version_t id, const std::type_info &info, TVirtualIsAProxy *isa, const char *dfil, const char *ifil, Int_t dl, Int_t il) |
| Global function called by a class' static Dictionary() method (see the ClassDef macro). More... | |
| void | DisableImplicitMT () |
| Disables the implicit multi-threading in ROOT (see EnableImplicitMT). More... | |
| void | EnableImplicitMT (UInt_t numthreads=0) |
| Enable ROOT's implicit multi-threading for all objects and methods that provide an internal parallelisation mechanism. More... | |
| void | EnableThreadSafety () |
| Enables the global mutex to make ROOT thread safe/aware. More... | |
| static std::string::size_type | FindEndSymbol (std::string &command) |
| template<typename T > | |
| EFromHumanReadableSize | FromHumanReadableSize (ROOT::Internal::TStringView str, T &value) |
| template<typename T > | |
| EFromHumanReadableSize | FromHumanReadableSize (std::string_view str, T &value) |
| Convert strings like the following into byte counts 5MB, 5 MB, 5M, 3.7GB, 123b, 456kB, 3.7GiB, 5MiB with some amount of forgiveness baked into the parsing. More... | |
| template<typename T > | |
| TClass * | GetClass (const T *) |
| template<typename T > | |
| TClass * | GetClass (const T **) |
| template<typename T > | |
| TClass * | GetClass (const T *const *) |
| template<typename T > | |
| TClass * | GetClass (T *) |
| template<typename T > | |
| TClass * | GetClass (T **) |
| std::vector< std::unique_ptr< TClassRec > > & | GetDelayedAddClass () |
| std::vector< std::pair< const char *, const char * > > & | GetDelayedAddClassAlternate () |
| UInt_t | GetImplicitMTPoolSize () |
| Returns the size of the pool used for implicit multi-threading. More... | |
| TString & | GetMacroPath () |
| TROOT * | GetROOT () |
| void | GetRuleIncludes (std::list< std::string > &result) |
| Get the list of includes specified in the shema rules. More... | |
| bool | HasValidDataMembers (SchemaRuleMap_t &rule, MembersTypeMap_t &members, std::string &error_string) |
| Check if given rule contains references to valid data members. More... | |
| Bool_t | IsImplicitMTEnabled () |
| Returns true if the implicit multi-threading in ROOT is enabled. More... | |
| template<class T > | |
| TSeq< T > | MakeSeq (T begin, T end, T step=1) |
| template<class T > | |
| TSeq< T > | MakeSeq (T end) |
| bool | ParseRule (std::string command, ROOT::Internal::MembersMap_t &result, std::string &error_string) |
| Parse the schema rule as specified in the LinkDef file. More... | |
| void | ProcessReadPragma (const char *args, std::string &error_string) |
| I am being called when a read pragma is encountered. More... | |
| void | ProcessReadRawPragma (const char *args, std::string &error_string) |
| I am being called then a readraw pragma is encountered. More... | |
| TNamed * | RegisterClassTemplate (const char *name, const char *file, Int_t line) |
| Global function to register the implementation file and line of a class template (i.e. More... | |
| void | RemoveClass (const char *cname) |
| Global function called by the dtor of a class's init class (see the ClassImp macro). More... | |
| void | ResetClassVersion (TClass *, const char *, Short_t) |
| Global function to update the version number. More... | |
| template<class RootClass > | |
| Short_t | SetClassVersion (RootClass *) |
| static void | StrReplace (std::string &proc, const std::string &pat, const std::string &tr) |
| Replace all accurances of given string with other string. More... | |
| template<typename value_type > | |
| void | ToHumanReadableSize (value_type bytes, Bool_t si, Double_t *coeff, const char **units) |
| Return the size expressed in 'human readable' format. More... | |
| static Bool_t | ValidateRule (const std::map< std::string, std::string > &rule, std::string &error_string) |
| Validate if the user specified rules are correct. More... | |
| static void | WriteAutoVariables (const std::list< std::string > &target, const SourceTypeList_t &source, MembersTypeMap_t &members, std::string &className, std::string &mappedName, std::ostream &output) |
| Write down the sources. More... | |
| void | WriteReadRawRuleFunc (SchemaRuleMap_t &rule, int index, std::string &mappedName, MembersTypeMap_t &members, std::ostream &output) |
| Write the conversion function for ReadRaw rule, the function name is being written to rule["funcname"]. More... | |
| void | WriteReadRuleFunc (SchemaRuleMap_t &rule, int index, std::string &mappedName, MembersTypeMap_t &members, std::ostream &output) |
| Write the conversion function for Read rule, the function name is being written to rule["funcname"]. More... | |
| void | WriteSchemaList (std::list< SchemaRuleMap_t > &rules, const std::string &listName, std::ostream &output) |
| Write schema rules. More... | |
Variables | |
| R__EXTERN TVirtualRWMutex * | gCoreMutex = nullptr |
| R__EXTERN SchemaRuleClassMap_t | gReadRawRules |
| R__EXTERN SchemaRuleClassMap_t | gReadRules |
Namespace for new ROOT classes and functions.
A helper class for managing IMT work during TTree:Fill operations.
< A helper class for bulk IO (multiple events per call) operations.
| using ROOT::ColumnNames_t = typedef ROOT::Detail::RDF::ColumnNames_t |
Definition at line 788 of file RDataFrame.cxx.
| using ROOT::ColumnNamesPtr_t = typedef std::shared_ptr<const ColumnNames_t> |
Definition at line 789 of file RDataFrame.cxx.
| typedef void(* ROOT::DirAutoAdd_t) (void *, TDirectory *) |
| using ROOT::Double_v = typedef Double_t |
| using ROOT::Float_v = typedef Float_t |
| using ROOT::Int32_v = typedef Int_t |
| using ROOT::Int_v = typedef Int_t |
| typedef std::map<std::string, ROOT::Internal::TSchemaType> ROOT::MembersTypeMap_t |
Definition at line 28 of file RConversionRuleParser.h.
| typedef Long64_t(* ROOT::MergeFunc_t) (void *, TCollection *, TFileMergeInfo *) |
| typedef void(* ROOT::ResetAfterMergeFunc_t) (void *, TFileMergeInfo *) |
| typedef std::map<std::string, std::list<SchemaRuleMap_t> > ROOT::SchemaRuleClassMap_t |
Definition at line 24 of file RConversionRuleParser.h.
| typedef std::map<std::string, std::string> ROOT::SchemaRuleMap_t |
Definition at line 23 of file RConversionRuleParser.h.
| typedef std::list<std::pair<ROOT::Internal::TSchemaType,std::string> > ROOT::SourceTypeList_t |
Definition at line 39 of file RConversionRuleParser.cxx.
| using ROOT::TDataFrame = typedef ROOT::RDataFrame |
Definition at line 16 of file TDataFrame.hxx.
| using ROOT::TSeqI = typedef TSeq<int> |
| using ROOT::TSeqL = typedef TSeq<long> |
| using ROOT::TSeqU = typedef TSeq<unsigned int> |
| using ROOT::TSeqUL = typedef TSeq<unsigned long> |
| using ROOT::UInt32_v = typedef UInt_t |
| using ROOT::UInt_v = typedef UInt_t |
Definition at line 96 of file Compression.h.
|
strong |
| Enumerator | |
|---|---|
| kSuccess | |
| kParseFail | |
| kOverflow | |
Definition at line 69 of file StringConv.hxx.
| Enumerator | |
|---|---|
| kExactMatch | |
| kConversionMatch | |
Definition at line 152 of file TDictionary.h.
|
strong |
| Enumerator | |
|---|---|
| kSupported | |
Definition at line 32 of file TIOFeatures.hxx.
| enum ROOT::ESTLType |
Definition at line 28 of file ESTLType.h.
| Enumerator | |
|---|---|
| kMaxUserThreadSlot | |
| kPadThreadSlot | |
| kClassThreadSlot | |
| kDirectoryThreadSlot | |
| kFileThreadSlot | |
| kPerfStatsThreadSlot | |
| kMaxThreadSlot | |
Definition at line 19 of file TThreadSlots.h.
| void ROOT::AddClass | ( | const char * | cname, |
| Version_t | id, | ||
| const std::type_info & | info, | ||
| DictFuncPtr_t | dict, | ||
| Int_t | pragmabits | ||
| ) |
Global function called by the ctor of a class's init class (see the ClassImp macro).
Definition at line 760 of file TClassTable.cxx.
| void ROOT::AddClass | ( | const char * | cname, |
| Version_t | id, | ||
| DictFuncPtr_t | dict, | ||
| Int_t | pragmabits | ||
| ) |
| void ROOT::AddClassAlternate | ( | const char * | normName, |
| const char * | alternate | ||
| ) |
Global function called by GenerateInitInstance.
(see the ClassImp macro).
Definition at line 782 of file TClassTable.cxx.
| void ROOT::Class_ShowMembers | ( | TClass * | cl, |
| const void * | obj, | ||
| TMemberInspector & | insp | ||
| ) |
Indirect call to the implementation of ShowMember allowing [forward] declaration with out a full definition of the TClass class.
Definition at line 502 of file TClass.cxx.
Definition at line 192 of file TClassTable.cxx.
| int ROOT::CompressionSettings | ( | RCompressionSetting::EAlgorithm | algorithm, |
| int | compressionLevel | ||
| ) |
| int ROOT::CompressionSettings | ( | ROOT::ECompressionAlgorithm | algorithm, |
| int | compressionLevel | ||
| ) |
Deprecated name, do not use:
| TClass * ROOT::CreateClass | ( | const char * | cname, |
| Version_t | id, | ||
| const char * | dfil, | ||
| const char * | ifil, | ||
| Int_t | dl, | ||
| Int_t | il | ||
| ) |
Global function called by a class' static Dictionary() method (see the ClassDef macro).
Definition at line 5663 of file TClass.cxx.
| TClass * ROOT::CreateClass | ( | const char * | cname, |
| Version_t | id, | ||
| const std::type_info & | info, | ||
| TVirtualIsAProxy * | isa, | ||
| const char * | dfil, | ||
| const char * | ifil, | ||
| Int_t | dl, | ||
| Int_t | il | ||
| ) |
Global function called by a class' static Dictionary() method (see the ClassDef macro).
Definition at line 5648 of file TClass.cxx.
| void ROOT::DisableImplicitMT | ( | ) |
Enable ROOT's implicit multi-threading for all objects and methods that provide an internal parallelisation mechanism.
| [in] | numthreads | Number of threads to use. If not specified or set to zero, the number of threads is automatically decided by the implementation. Any other value is used as a hint. |
ROOT must be built with the compilation flag imt=ON for this feature to be available. The following objects and methods automatically take advantage of multi-threading if a call to EnableImplicitMT has been made before usage:
EnableImplicitMT calls in turn EnableThreadSafety. The 'numthreads' parameter allows to control the number of threads to be used by the implicit multi-threading. However, this parameter is just a hint for ROOT: it will try to satisfy the request if the execution scenario allows it. For example, if ROOT is configured to use an external scheduler, setting a value for 'numthreads' might not have any effect.
| void ROOT::EnableThreadSafety | ( | ) |
Enables the global mutex to make ROOT thread safe/aware.
The following becomes safe:
In addition, gDirectory, gFile and gPad become a thread-local variable. In all threads, gDirectory defaults to gROOT, a singleton which supports thread-safe insertion and deletion of contents. gFile and gPad default to nullptr, as it is for single-thread programs.
The ROOT graphics subsystem is not made thread-safe by this method. In particular drawing or printing different canvases from different threads (and analogous operations such as invoking Draw on a TObject) is not thread-safe.
Note that there is no DisableThreadSafety(). ROOT's thread-safety features cannot be disabled once activated.
|
static |
Definition at line 50 of file RConversionRuleParser.cxx.
| EFromHumanReadableSize ROOT::FromHumanReadableSize | ( | ROOT::Internal::TStringView | str, |
| T & | value | ||
| ) |
Definition at line 158 of file StringConv.hxx.
| EFromHumanReadableSize ROOT::FromHumanReadableSize | ( | std::string_view | str, |
| T & | value | ||
| ) |
Convert strings like the following into byte counts 5MB, 5 MB, 5M, 3.7GB, 123b, 456kB, 3.7GiB, 5MiB with some amount of forgiveness baked into the parsing.
For this routine we use the official SI unit where the [i] is reserved for the 'legacy' power of two units. 1KB = 1000 bytes, 1KiB = 1024 bytes.
| str | the string to be parsed |
| value | will be updated with the result if and only if the parse is successful and does not overflow for the type of value. |
Definition at line 86 of file StringConv.hxx.
| TClass * ROOT::GetClass | ( | const T * | ) |
| TClass * ROOT::GetClass | ( | const T ** | ) |
| TClass * ROOT::GetClass | ( | const T *const * | ) |
| std::vector< std::unique_ptr< TClassRec > > & ROOT::GetDelayedAddClass | ( | ) |
Definition at line 203 of file TClassTable.cxx.
| std::vector< std::pair< const char *, const char * > > & ROOT::GetDelayedAddClassAlternate | ( | ) |
Definition at line 209 of file TClassTable.cxx.
| UInt_t ROOT::GetImplicitMTPoolSize | ( | ) |
| void ROOT::GetRuleIncludes | ( | std::list< std::string > & | result | ) |
Get the list of includes specified in the shema rules.
Definition at line 829 of file RConversionRuleParser.cxx.
| Bool_t ROOT::HasValidDataMembers | ( | SchemaRuleMap_t & | rule, |
| MembersTypeMap_t & | members, | ||
| std::string & | error_string | ||
| ) |
Check if given rule contains references to valid data members.
Definition at line 435 of file RConversionRuleParser.cxx.
| bool ROOT::IsImplicitMTEnabled | ( | ) |
| TSeq< T > ROOT::MakeSeq | ( | T | begin, |
| T | end, | ||
| T | step = 1 |
||
| ) |
| Bool_t ROOT::ParseRule | ( | std::string | rule, |
| ROOT::Internal::MembersMap_t & | result, | ||
| std::string & | error_string | ||
| ) |
Parse the schema rule as specified in the LinkDef file.
Definition at line 91 of file RConversionRuleParser.cxx.
| void ROOT::ProcessReadPragma | ( | const char * | args, |
| std::string & | error_string | ||
| ) |
I am being called when a read pragma is encountered.
Definition at line 873 of file RConversionRuleParser.cxx.
| void ROOT::ProcessReadRawPragma | ( | const char * | args, |
| std::string & | error_string | ||
| ) |
I am being called then a readraw pragma is encountered.
Definition at line 909 of file RConversionRuleParser.cxx.
Global function to register the implementation file and line of a class template (i.e.
NOT a concrete class).
Definition at line 862 of file TClassTable.cxx.
| void ROOT::RemoveClass | ( | const char * | cname | ) |
Global function called by the dtor of a class's init class (see the ClassImp macro).
Definition at line 837 of file TClassTable.cxx.
Global function to update the version number.
This is called via the RootClassVersion macro.
if cl!=0 and cname==-1, set the new class version if and only is greater than the existing one and greater or equal to 2; and also ignore the request if fVersionUsed is true.
Note on class version number:
Definition at line 805 of file TClassTable.cxx.
| Short_t ROOT::SetClassVersion | ( | RootClass * | ) |
|
static |
Replace all accurances of given string with other string.
Definition at line 731 of file RConversionRuleParser.cxx.
| void ROOT::ToHumanReadableSize | ( | value_type | bytes, |
| Bool_t | si, | ||
| Double_t * | coeff, | ||
| const char ** | units | ||
| ) |
Return the size expressed in 'human readable' format.
| bytes | the size in bytes to be converted |
| si | whether to use the SI units or not. |
| coeff | return the size expressed in the new unit. |
| units | return a pointer to the string representation of the new unit |
Definition at line 38 of file StringConv.hxx.
|
static |
Validate if the user specified rules are correct.
Definition at line 265 of file RConversionRuleParser.cxx.
|
static |
Write down the sources.
Definition at line 464 of file RConversionRuleParser.cxx.
| void ROOT::WriteReadRawRuleFunc | ( | SchemaRuleMap_t & | rule, |
| int | index, | ||
| std::string & | mappedName, | ||
| MembersTypeMap_t & | members, | ||
| std::ostream & | output | ||
| ) |
Write the conversion function for ReadRaw rule, the function name is being written to rule["funcname"].
Definition at line 682 of file RConversionRuleParser.cxx.
| void ROOT::WriteReadRuleFunc | ( | SchemaRuleMap_t & | rule, |
| int | index, | ||
| std::string & | mappedName, | ||
| MembersTypeMap_t & | members, | ||
| std::ostream & | output | ||
| ) |
Write the conversion function for Read rule, the function name is being written to rule["funcname"].
Definition at line 629 of file RConversionRuleParser.cxx.
| void ROOT::WriteSchemaList | ( | std::list< SchemaRuleMap_t > & | rules, |
| const std::string & | listName, | ||
| std::ostream & | output | ||
| ) |
Write schema rules.
Definition at line 753 of file RConversionRuleParser.cxx.
| ROOT::TVirtualRWMutex * ROOT::gCoreMutex = nullptr |
Definition at line 36 of file TVirtualRWMutex.h.
| SchemaRuleClassMap_t ROOT::gReadRawRules |
Definition at line 26 of file RConversionRuleParser.h.
| SchemaRuleClassMap_t ROOT::gReadRules |
Definition at line 25 of file RConversionRuleParser.h.