1558 lines
43 KiB
Plaintext
1558 lines
43 KiB
Plaintext
// Copyright (C) 2010, Guy Barrand. All rights reserved.
|
|
// See the file tools.license for terms.
|
|
|
|
#ifndef tools_wroot_infos
|
|
#define tools_wroot_infos
|
|
|
|
#include "info"
|
|
|
|
namespace tools {
|
|
namespace wroot {
|
|
|
|
inline void scs(unsigned int& a_cs,const std::string& a_s) {
|
|
unsigned int l = a_s.size();
|
|
for(unsigned int i=0;i<l;i++) a_cs = a_cs*3+a_s[i];
|
|
}
|
|
|
|
inline void acs(unsigned int& a_cs,int a_n,int* a_dims) {
|
|
for(int i=0;i<a_n;i++) a_cs = a_cs*3+(unsigned int)a_dims[i];
|
|
}
|
|
|
|
inline void fill_vec(List<StreamerInfo>& a_infos,
|
|
const std::string& a_type,
|
|
streamer_info::Type a_si_type) {
|
|
unsigned int check = 196608;
|
|
StreamerInfo* info =
|
|
new StreamerInfo(std::string("vector<")+a_type+">",4,check);
|
|
a_infos.push_back(info);
|
|
info->add(new streamer_STL("This","Used to call the proper TStreamerInfo case",0,a_si_type,std::string("vector<")+a_type+">"));
|
|
}
|
|
|
|
|
|
inline bool fill_infos(List<StreamerInfo>& a_infos,std::ostream& a_out) {
|
|
|
|
const int size_DOUBLE = 8;
|
|
const int size_INT = 4;
|
|
const int size_POINTER = 4;
|
|
//const int size_OBJECT_POINTER = 4;
|
|
const int size_COUNTER = 4;
|
|
const int size_VIRTUAL = 4;
|
|
|
|
const int size_TNamed = 28;
|
|
const int size_TAttLine = 12;
|
|
const int size_TAttFill = 8;
|
|
const int size_TAttMarker = 12;
|
|
const int size_TObjArray = 40;
|
|
const int size_TArray = 8;
|
|
const int size_TArrayD = 12;
|
|
|
|
const int size_TString = 8;
|
|
const int size_TBranch = 256;
|
|
const int size_TLeaf = 64;
|
|
|
|
// sizeof(TString) = 8 (4 (virtual ~) + 1 + 3 (align))
|
|
// sizeof(TObject) = 12
|
|
// sizeof(TNamed) = 28
|
|
// sizeof(TObjArray) = 40
|
|
// sizeof(TArray) = 8
|
|
// sizeof(TArrayI) = 12
|
|
// sizeof(TArrayD) = 12
|
|
// sizeof(TArrayF) = 12
|
|
|
|
///////////////////////////////////////////////////////////
|
|
/// core //////////////////////////////////////////////////
|
|
///////////////////////////////////////////////////////////
|
|
|
|
short TObject_version = 1;
|
|
short TNamed_version = 1;
|
|
short TStreamerElement_version = 2;
|
|
short TArray_version = 1;
|
|
short TArrayF_version = 1;
|
|
short TArrayD_version = 1;
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TNamed");
|
|
//base :
|
|
scs(check,"TObject");
|
|
//members :
|
|
scs(check,"fName");
|
|
scs(check,"TString");
|
|
|
|
scs(check,"fTitle");
|
|
scs(check,"TString");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TNamed",1,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
info->add(new streamer_base("TObject","Basic ROOT object",0,TObject_version)); //12
|
|
info->add(new streamer_string("fName","object identifier",12));//8
|
|
info->add(new streamer_string("fTitle","object title",20));//8
|
|
|
|
//28
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TStreamerInfo");
|
|
//bases :
|
|
scs(check,"TNamed");
|
|
//members :
|
|
scs(check,"fCheckSum");
|
|
scs(check,"UInt_t");
|
|
|
|
scs(check,"fClassVersion");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fElements");
|
|
scs(check,"TObjArray*");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TStreamerInfo",2,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
info->add(new streamer_base("TNamed","The basis for a named object (name, title)",0,TNamed_version));//28
|
|
info->add(new streamer_basic_type("fCheckSum","checksum of original class",28,streamer_info::UNSIGNED_INT,"UInt_t"));//4
|
|
info->add(new streamer_basic_type("fClassVersion","Class version identifier",32,streamer_info::INT,"Int_t"));//4
|
|
//40 = 2*int+4*int_p+2*ulong_p+bool+p (bool=4 !)
|
|
info->add(new streamer_object_pointer("fElements","Array of TStreamerElements",76,"TObjArray*"));//4
|
|
|
|
//80
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TStreamerElement");
|
|
//bases :
|
|
scs(check,"TNamed");
|
|
//members :
|
|
scs(check,"fType");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fSize");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fArrayLength");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fArrayDim");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fMaxIndex");
|
|
scs(check,"Int_t");
|
|
int dim = 5;
|
|
acs(check,1,&dim);
|
|
|
|
scs(check,"fTypeName");
|
|
scs(check,"TString");
|
|
//Should be : 2369818458U
|
|
|
|
StreamerInfo* info = new StreamerInfo("TStreamerElement",2,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
info->add(new streamer_base("TNamed","The basis for a named object (name, title)",0,TNamed_version));
|
|
info->add(new streamer_basic_type("fType","element type",28,streamer_info::INT,"Int_t"));
|
|
info->add(new streamer_basic_type("fSize","sizeof element",32,streamer_info::INT,"Int_t"));
|
|
info->add(new streamer_basic_type("fArrayLength","cumulative size of all array dims",36,streamer_info::INT,"Int_t"));
|
|
info->add(new streamer_basic_type("fArrayDim","number of array dimensions",40,streamer_info::INT,"Int_t"));
|
|
|
|
{streamer_element* elem = new streamer_basic_type("fMaxIndex","Maximum array index for array dimension \"dim\"",44,streamer_info::INT,"Int_t");
|
|
info->add(elem);
|
|
elem->setArrayDimension(1);
|
|
elem->setMaxIndex(0,5);}
|
|
|
|
info->add(new streamer_string("fTypeName","Data type name of data member",72));}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TStreamerBase");
|
|
//bases :
|
|
scs(check,"TStreamerElement");
|
|
//members :
|
|
scs(check,"fBaseVersion");
|
|
scs(check,"Int_t");
|
|
//Should be : 2671078514U
|
|
|
|
StreamerInfo* info = new StreamerInfo("TStreamerBase",3,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
info->add(new streamer_base("TStreamerElement","base class for one element (data member) to be Streamed",0,TStreamerElement_version));
|
|
info->add(new streamer_basic_type("fBaseVersion","version number of the base class",88,streamer_info::INT,"Int_t"));}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TStreamerString");
|
|
//bases :
|
|
scs(check,"TStreamerElement");
|
|
//Should be : 2525579865U
|
|
|
|
StreamerInfo* info = new StreamerInfo("TStreamerString",2,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
info->add(new streamer_base("TStreamerElement","base class for one element (data member) to be Streamed",0,TStreamerElement_version));}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TStreamerBasicType");
|
|
//bases :
|
|
scs(check,"TStreamerElement");
|
|
//Should be : 3001875966U;
|
|
|
|
StreamerInfo* info = new StreamerInfo("TStreamerBasicType",2,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
info->add(new streamer_base("TStreamerElement","base class for one element (data member) to be Streamed",0,TStreamerElement_version));}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TStreamerBasicPointer");
|
|
//bases :
|
|
scs(check,"TStreamerElement");
|
|
//members :
|
|
scs(check,"fCountVersion");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fCountName");
|
|
scs(check,"TString");
|
|
|
|
scs(check,"fCountClass");
|
|
scs(check,"TString");
|
|
//Should be : 1587298059U
|
|
|
|
StreamerInfo* info = new StreamerInfo("TStreamerBasicPointer",2,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
info->add(new streamer_base("TStreamerElement","base class for one element (data member) to be Streamed",0,TStreamerElement_version));
|
|
info->add(new streamer_basic_type("fCountVersion","version number of the class with the counter",88,streamer_info::INT,"Int_t"));
|
|
info->add(new streamer_string("fCountName","name of data member holding the array count",92));
|
|
info->add(new streamer_string("fCountClass","name of the class with the counter",100));}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TStreamerObject");
|
|
//bases :
|
|
scs(check,"TStreamerElement");
|
|
//Should be : 2177456715U
|
|
|
|
StreamerInfo* info = new StreamerInfo("TStreamerObject",2,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
info->add(new streamer_base("TStreamerElement","base class for one element (data member) to be Streamed",0,TStreamerElement_version));}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TStreamerObjectPointer");
|
|
//bases :
|
|
scs(check,"TStreamerElement");
|
|
//Should be : 720556968U
|
|
|
|
StreamerInfo* info = new StreamerInfo("TStreamerObjectPointer",2,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
info->add(new streamer_base("TStreamerElement","base class for one element (data member) to be Streamed",0,TStreamerElement_version));}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TStreamerObjectAny");
|
|
//bases :
|
|
scs(check,"TStreamerElement");
|
|
//Should be : 3108880127U
|
|
|
|
StreamerInfo* info = new StreamerInfo("TStreamerObjectAny",2,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
info->add(new streamer_base("TStreamerElement","base class for one element (data member) to be Streamed",0,TStreamerElement_version));}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TArray");
|
|
//members :
|
|
scs(check,"fN");
|
|
scs(check,"Int_t");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TArray",1,check);
|
|
a_infos.push_back(info);
|
|
|
|
// Elements :
|
|
int offset = 0;
|
|
offset += size_VIRTUAL;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fN",
|
|
"Number of array elements",
|
|
offset,
|
|
streamer_info::INT,"Int_t")); //4
|
|
offset += size_INT;
|
|
|
|
//8
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TArrayI");
|
|
//base :
|
|
scs(check,"TArray");
|
|
//members :
|
|
scs(check,"fArray");
|
|
scs(check,"Int_t*");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TArrayI",1,check);
|
|
a_infos.push_back(info);
|
|
|
|
// Elements :
|
|
int offset = 0;
|
|
|
|
info->add(new streamer_base(
|
|
"TArray",
|
|
"Abstract array base class",
|
|
offset,
|
|
TArray_version));
|
|
offset += size_TArray;
|
|
|
|
info->add(new streamer_basic_pointer(
|
|
"fArray",
|
|
"[fN] Array of fN integers",
|
|
offset,
|
|
streamer_info::INT,"fN","TArray",1,"Int_t*"));
|
|
offset += size_POINTER;
|
|
|
|
//12
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TArrayD");
|
|
//base :
|
|
scs(check,"TArray");
|
|
//members :
|
|
scs(check,"fArray");
|
|
scs(check,"Double_t*");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TArrayD",1,check);
|
|
a_infos.push_back(info);
|
|
|
|
// Elements :
|
|
int offset = 0;
|
|
|
|
info->add(new streamer_base(
|
|
"TArray",
|
|
"Abstract array base class",
|
|
offset,
|
|
TArray_version));
|
|
offset += size_TArray; //8
|
|
|
|
info->add(new streamer_basic_pointer(
|
|
"fArray",
|
|
"[fN] Array of fN integers",
|
|
offset,
|
|
streamer_info::DOUBLE,"fN","TArray",1,"Double_t*"));
|
|
offset += size_POINTER;
|
|
|
|
//12
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TArrayF");
|
|
//base :
|
|
scs(check,"TArray");
|
|
//members :
|
|
scs(check,"fArray");
|
|
scs(check,"Float_t*");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TArrayF",1,check);
|
|
a_infos.push_back(info);
|
|
|
|
// Elements :
|
|
int offset = 0;
|
|
|
|
info->add(new streamer_base(
|
|
"TArray",
|
|
"Abstract array base class",
|
|
offset,
|
|
TArray_version));
|
|
offset += size_TArray;
|
|
|
|
info->add(new streamer_basic_pointer(
|
|
"fArray",
|
|
"[fN] Array of fN integers",
|
|
offset,
|
|
streamer_info::FLOAT,"fN","TArray",1,"Float_t*"));
|
|
offset += size_POINTER;
|
|
|
|
//12
|
|
}
|
|
|
|
fill_vec(a_infos,"char",streamer_info::CHAR);
|
|
fill_vec(a_infos,"short",streamer_info::SHORT);
|
|
fill_vec(a_infos,"int",streamer_info::INT);
|
|
fill_vec(a_infos,"unsigned char",streamer_info::UNSIGNED_CHAR);
|
|
fill_vec(a_infos,"unsigned short",streamer_info::UNSIGNED_SHORT);
|
|
fill_vec(a_infos,"unsigned int",streamer_info::UNSIGNED_INT);
|
|
fill_vec(a_infos,"float",streamer_info::FLOAT);
|
|
fill_vec(a_infos,"double",streamer_info::DOUBLE);
|
|
fill_vec(a_infos,"bool",streamer_info::BOOL);
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
/// graf //////////////////////////////////////////////////
|
|
///////////////////////////////////////////////////////////
|
|
//sizeof(Font_t) = 2
|
|
//sizeof(Style_t) = 2
|
|
//sizeof(Marker_t) = 2
|
|
//sizeof(Width_t) = 2
|
|
//sizeof(Size_t) = 4
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TAttLine");
|
|
//members :
|
|
scs(check,"fLineColor");
|
|
scs(check,"Color_t");
|
|
|
|
scs(check,"fLineStyle");
|
|
scs(check,"Style_t");
|
|
|
|
scs(check,"fLineWidth");
|
|
scs(check,"Width_t");
|
|
|
|
//Should be : 1369587346U
|
|
|
|
// Beurk ; but the ROOT TTree compells indirectly the below.
|
|
StreamerInfo* info = new StreamerInfo("TAttLine",1,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
//4 (virtual ~)
|
|
info->add(new streamer_basic_type("fLineColor","line color",4,streamer_info::SHORT,"Color_t"));//2
|
|
info->add(new streamer_basic_type("fLineStyle","line style",6,streamer_info::SHORT,"Style_t"));//2
|
|
info->add(new streamer_basic_type("fLineWidth","line width",8,streamer_info::SHORT,"Width_t"));//2
|
|
//2 (alignement ???)
|
|
|
|
//12
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TAttFill");
|
|
//members :
|
|
scs(check,"fFillColor");
|
|
scs(check,"Color_t");
|
|
|
|
scs(check,"fFillStyle");
|
|
scs(check,"Style_t");
|
|
|
|
//Should be : 1204118360U
|
|
StreamerInfo* info = new StreamerInfo("TAttFill",1,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
//4 (virtual ~)
|
|
info->add(new streamer_basic_type("fFillColor","fill area color",4,streamer_info::SHORT,"Color_t"));//2
|
|
info->add(new streamer_basic_type("fFillStyle","fill area style",6,streamer_info::SHORT,"Style_t"));//2
|
|
|
|
//8
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TAttMarker");
|
|
//members :
|
|
scs(check,"fMarkerColor");
|
|
scs(check,"Color_t");
|
|
|
|
scs(check,"fMarkerStyle");
|
|
scs(check,"Style_t");
|
|
|
|
scs(check,"fMarkerSize");
|
|
scs(check,"Size_t");
|
|
|
|
//Should be 4207747460U
|
|
|
|
StreamerInfo* info = new StreamerInfo("TAttMarker",1,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
//4 (virtual ~)
|
|
info->add(new streamer_basic_type("fMarkerColor","Marker color index",0,streamer_info::SHORT,"Color_t"));//2
|
|
info->add(new streamer_basic_type("fMarkerStyle","Marker style",4,streamer_info::SHORT,"Style_t"));//2
|
|
info->add(new streamer_basic_type("fMarkerSize","Marker size",6,streamer_info::FLOAT,"Size_t"));//4
|
|
|
|
//12
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
/// tree //////////////////////////////////////////////////
|
|
///////////////////////////////////////////////////////////
|
|
short TAttLine_version = 1;
|
|
short TAttFill_version = 1;
|
|
short TAttMarker_version = 1;
|
|
short TBranch_version = 8;
|
|
short TLeaf_version = 2;
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TTree");
|
|
//bases :
|
|
scs(check,"TNamed");
|
|
scs(check,"TAttLine");
|
|
scs(check,"TAttFill");
|
|
scs(check,"TAttMarker");
|
|
//members :
|
|
scs(check,"fEntries");
|
|
scs(check,"Stat_t");
|
|
|
|
scs(check,"fTotBytes");
|
|
scs(check,"Stat_t");
|
|
|
|
scs(check,"fZipBytes");
|
|
scs(check,"Stat_t");
|
|
|
|
scs(check,"fSavedBytes");
|
|
scs(check,"Stat_t");
|
|
|
|
scs(check,"fTimerInterval");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fScanField");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fUpdate");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fMaxEntryLoop");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fMaxVirtualSize");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fAutoSave");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fEstimate");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fBranches");
|
|
scs(check,"TObjArray");
|
|
|
|
scs(check,"fLeaves");
|
|
scs(check,"TObjArray");
|
|
|
|
//scs(check,"fAliases");
|
|
//scs(check,"TList*");
|
|
|
|
scs(check,"fIndexValues");
|
|
scs(check,"TArrayD");
|
|
|
|
scs(check,"fIndex");
|
|
scs(check,"TArrayI");
|
|
|
|
//scs(check,"fFriends");
|
|
//scs(check,"TList*");
|
|
//Should be : 3245044844U //3.00.06
|
|
//Should be : FIXME //3.10.02
|
|
|
|
StreamerInfo* info = new StreamerInfo("TTree",5,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
int offset = 0;
|
|
|
|
info->add(new streamer_base(
|
|
"TNamed",
|
|
"The basis for a named object (name, title)",
|
|
offset,
|
|
TNamed_version));
|
|
offset += size_TNamed;
|
|
|
|
info->add(new streamer_base(
|
|
"TAttLine",
|
|
"Line attributes",
|
|
offset,
|
|
TAttLine_version));
|
|
offset += size_TAttLine;
|
|
|
|
info->add(new streamer_base(
|
|
"TAttFill",
|
|
"Fill area attributes",
|
|
offset,
|
|
TAttFill_version));
|
|
offset += size_TAttFill;
|
|
|
|
info->add(new streamer_base(
|
|
"TAttMarker",
|
|
"Marker attributes",
|
|
offset,
|
|
TAttMarker_version));
|
|
offset += size_TAttMarker;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fEntries",
|
|
"Number of entries",
|
|
offset,
|
|
streamer_info::DOUBLE,"Stat_t"));
|
|
offset += size_DOUBLE;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fTotBytes",
|
|
"Total number of bytes in all branches before compression",
|
|
offset,
|
|
streamer_info::DOUBLE,"Stat_t"));
|
|
offset += size_DOUBLE;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fZipBytes",
|
|
"Total number of bytes in all branches after compression",
|
|
offset,
|
|
streamer_info::DOUBLE,"Stat_t"));
|
|
offset += size_DOUBLE;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fSavedBytes",
|
|
"Number of autosaved bytes",
|
|
offset,
|
|
streamer_info::DOUBLE,"Stat_t"));
|
|
offset += size_DOUBLE;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fTimerInterval",
|
|
"Timer interval in milliseconds",
|
|
offset,
|
|
streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fScanField",
|
|
"Number of runs before prompting in Scan",
|
|
offset,
|
|
streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fUpdate",
|
|
"Update frequency for EntryLoop",
|
|
offset,
|
|
streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fMaxEntryLoop",
|
|
"Maximum number of entries to process",
|
|
offset,
|
|
streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fMaxVirtualSize",
|
|
"Maximum total size of buffers kept in memory",
|
|
offset,
|
|
streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fAutoSave",
|
|
"Autosave tree when fAutoSave bytes produced",
|
|
offset,
|
|
streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fEstimate",
|
|
"Number of entries to estimate histogram limits",
|
|
offset,
|
|
streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
offset += 5*size_INT+size_POINTER, //! //144
|
|
|
|
info->add(new streamer_object(
|
|
"fBranches",
|
|
"List of Branches",
|
|
offset,
|
|
"TObjArray"));
|
|
offset += size_TObjArray;
|
|
|
|
info->add(new streamer_object(
|
|
"fLeaves",
|
|
"Direct pointers to individual branch leaves",
|
|
offset,
|
|
"TObjArray"));
|
|
offset += size_TObjArray;
|
|
|
|
//info->add(new streamer_object_pointer(
|
|
// "fAliases",
|
|
// "List of aliases for expressions based on the tree branches.",
|
|
// offset,
|
|
// "TList*"));
|
|
//offset += size_OBJECT_POINTER;
|
|
|
|
offset += size_POINTER; //! //228
|
|
|
|
info->add(new streamer_object_any(
|
|
"fIndexValues",
|
|
"Sorted index values",
|
|
offset,
|
|
"TArrayD"));
|
|
offset += size_TArrayD;
|
|
|
|
info->add(new streamer_object_any(
|
|
"fIndex",
|
|
"Index of sorted values",
|
|
offset,
|
|
"TArrayI"));
|
|
|
|
//info->add(new streamer_object_pointer(
|
|
// "fFriends",
|
|
// "pointer to list of friend elements",
|
|
// offset,
|
|
// "TList*"));
|
|
//offset += size_OBJECT_POINTER;
|
|
|
|
if(offset!=240) {
|
|
a_out << "tools::wroot::fill_infos :"
|
|
<< " Tree " << offset << " (240 expected.)"
|
|
<< std::endl;
|
|
}}
|
|
|
|
//---------------------------------------------------------------------
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TBranch");
|
|
//bases :
|
|
scs(check,"TNamed");
|
|
scs(check,"TAttFill");
|
|
//members :
|
|
scs(check,"fCompress");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fBasketSize");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fEntryOffsetLen");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fWriteBasket");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fEntryNumber");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fOffset");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fMaxBaskets");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fSplitLevel");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fEntries");
|
|
scs(check,"Stat_t");
|
|
|
|
scs(check,"fTotBytes");
|
|
scs(check,"Stat_t");
|
|
|
|
scs(check,"fZipBytes");
|
|
scs(check,"Stat_t");
|
|
|
|
scs(check,"fBranches");
|
|
scs(check,"TObjArray");
|
|
|
|
scs(check,"fLeaves");
|
|
scs(check,"TObjArray");
|
|
|
|
scs(check,"fBaskets");
|
|
scs(check,"TObjArray");
|
|
|
|
scs(check,"fBasketBytes");
|
|
scs(check,"Int_t*");
|
|
|
|
scs(check,"fBasketEntry");
|
|
scs(check,"Int_t*");
|
|
|
|
scs(check,"fBasketSeek");
|
|
scs(check,"Seek_t*");
|
|
|
|
scs(check,"fFileName");
|
|
scs(check,"TString");
|
|
//Should be : 2056727376U (6 3.00.06)
|
|
//Should be : FIXME (7 3.03.01)
|
|
|
|
StreamerInfo* info = new StreamerInfo("TBranch",8,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
int offset = 0;
|
|
|
|
info->add(new streamer_base(
|
|
"TNamed",
|
|
"The basis for a named object (name, title)",
|
|
offset,
|
|
TNamed_version));
|
|
offset += size_TNamed;
|
|
|
|
info->add(new streamer_base(
|
|
"TAttFill",
|
|
"Fill area attributes",
|
|
offset,
|
|
TAttFill_version));
|
|
offset += size_TAttFill;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fCompress",
|
|
"(=1 branch is compressed, 0 otherwise)",
|
|
offset,
|
|
streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fBasketSize",
|
|
"Initial Size of Basket Buffer",
|
|
offset,
|
|
streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fEntryOffsetLen",
|
|
"Initial Length of fEntryOffset table in the basket buffers",
|
|
offset,
|
|
streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fWriteBasket",
|
|
"Last basket number written",
|
|
offset,
|
|
streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fEntryNumber",
|
|
"Current entry number (last one filled in this branch)",
|
|
offset,
|
|
streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fOffset",
|
|
"Offset of this branch",
|
|
offset,
|
|
streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fMaxBaskets",
|
|
"Maximum number of Baskets so far",
|
|
offset,
|
|
streamer_info::COUNTER,"Int_t"));
|
|
offset += size_COUNTER;
|
|
|
|
info->add(new streamer_basic_type( //3.03.01
|
|
"fSplitLevel",
|
|
"Branch split level",
|
|
offset,
|
|
streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
offset += 3*size_INT; //!
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fEntries",
|
|
"Number of entries",
|
|
offset,
|
|
streamer_info::DOUBLE,"Stat_t"));
|
|
offset += size_DOUBLE;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fTotBytes",
|
|
"Total number of bytes in all leaves before compression",
|
|
offset,
|
|
streamer_info::DOUBLE,"Stat_t"));
|
|
offset += size_DOUBLE;
|
|
|
|
info->add(new streamer_basic_type(
|
|
"fZipBytes",
|
|
"Total number of bytes in all leaves after compression",
|
|
offset,
|
|
streamer_info::DOUBLE,"Stat_t"));
|
|
offset += size_DOUBLE;
|
|
|
|
info->add(new streamer_object(
|
|
"fBranches",
|
|
"-> List of Branches of this branch",
|
|
offset,
|
|
"TObjArray"));
|
|
offset += size_TObjArray;
|
|
|
|
info->add(new streamer_object(
|
|
"fLeaves",
|
|
"-> List of leaves of this branch",
|
|
size_TNamed+6*size_INT+size_COUNTER+
|
|
offset,
|
|
"TObjArray"));
|
|
offset += size_TObjArray;
|
|
|
|
info->add(new streamer_object(
|
|
"fBaskets",
|
|
"-> List of baskets of this branch",
|
|
offset,
|
|
"TObjArray"));
|
|
offset += size_TObjArray;
|
|
|
|
offset += size_INT+size_POINTER; //!
|
|
|
|
info->add(new streamer_basic_pointer(
|
|
"fBasketBytes",
|
|
"[fMaxBaskets] Lenght of baskets on file",
|
|
offset,
|
|
streamer_info::INT,"fMaxBaskets","TBranch",6,"Int_t*"));
|
|
offset += size_POINTER;
|
|
|
|
info->add(new streamer_basic_pointer(
|
|
"fBasketEntry",
|
|
"[fMaxBaskets] Table of first entry in eack basket",
|
|
offset,
|
|
streamer_info::INT,"fMaxBaskets","TBranch",6,"Int_t*"));
|
|
offset += size_POINTER;
|
|
|
|
info->add(new streamer_basic_pointer(
|
|
"fBasketSeek",
|
|
"[fMaxBaskets] Addresses of baskets on file",
|
|
offset,
|
|
streamer_info::INT,"fMaxBaskets","TBranch",6,"Seek_t*"));
|
|
offset += size_POINTER;
|
|
|
|
offset += 3*size_POINTER; //!
|
|
|
|
info->add(new streamer_string(
|
|
"fFileName",
|
|
"Name of file where buffers are stored (\"\" if in same file as Tree header)",
|
|
offset));
|
|
|
|
if(offset!=256) {
|
|
a_out << "tools::wroot::fill_infos :"
|
|
<< " Branch " << offset << " (256 expected.)"
|
|
<< std::endl;
|
|
}}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TBranchObject");
|
|
//bases :
|
|
scs(check,"TBranch");
|
|
//members :
|
|
scs(check,"fClassName");
|
|
scs(check,"TString");
|
|
|
|
//Should be : 2857878535U
|
|
|
|
StreamerInfo* info = new StreamerInfo("TBranchObject",1,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
info->add(new streamer_base("TBranch","Branch descriptor",0,TBranch_version));
|
|
info->add(new streamer_string("fClassName","Class name of referenced object",256));
|
|
}
|
|
|
|
//---------------------------------------------------------------------
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TBranchElement");
|
|
//bases :
|
|
scs(check,"TBranch");
|
|
//members :
|
|
scs(check,"fClassName");
|
|
scs(check,"TString");
|
|
|
|
scs(check,"fClassVersion");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fID");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fType");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fStreamerType");
|
|
scs(check,"Int_t");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TBranchElement",1,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
int offset = 0;
|
|
info->add(new streamer_base("TBranch","Branch descriptor",offset,TBranch_version));
|
|
offset += size_TBranch;
|
|
|
|
info->add(new streamer_string("fClassName","Class name of referenced object",offset));
|
|
offset += size_TString;
|
|
|
|
info->add(new streamer_basic_type("fClassVersion","Version number of class",offset,streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type("fID","element serial number in fInfo",offset,streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type("fType","branch type",offset,streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type("fStreamerType","branch streamer type",offset,streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TLeaf");
|
|
//bases :
|
|
scs(check,"TNamed");
|
|
//members :
|
|
scs(check,"fLen");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fLenType");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fOffset");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fIsRange");
|
|
scs(check,"Bool_t");
|
|
|
|
scs(check,"fIsUnsigned");
|
|
scs(check,"Bool_t");
|
|
|
|
scs(check,"fLeafCount");
|
|
scs(check,"TLeaf*");
|
|
|
|
//Should be : 727988519U
|
|
|
|
StreamerInfo* info = new StreamerInfo("TLeaf",2,check);
|
|
a_infos.push_back(info);
|
|
|
|
// Elements :
|
|
info->add(new streamer_base("TNamed","The basis for a named object (name, title)",0,TNamed_version));
|
|
info->add(new streamer_basic_type("fLen","Number of fixed length elements",32,streamer_info::INT,"Int_t"));
|
|
info->add(new streamer_basic_type("fLenType","Number of bytes for this data type",36,streamer_info::INT,"Int_t"));
|
|
info->add(new streamer_basic_type("fOffset","Offset in ClonesArray object (if one)",40,streamer_info::INT,"Int_t"));
|
|
info->add(new streamer_basic_type("fIsRange","(=kTRUE if leaf has a range, kFALSE otherwise)",44,streamer_info::UNSIGNED_CHAR,"Bool_t"));
|
|
info->add(new streamer_basic_type("fIsUnsigned","(=kTRUE if unsigned, kFALSE otherwise)",45,streamer_info::UNSIGNED_CHAR,"Bool_t"));
|
|
info->add(new streamer_object_pointer("fLeafCount","Pointer to Leaf count if variable length",48,"TLeaf*"));
|
|
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TLeafS");
|
|
//bases :
|
|
scs(check,"TLeaf");
|
|
//members :
|
|
scs(check,"fMinimum");
|
|
scs(check,"Short_t");
|
|
|
|
scs(check,"fMaximum");
|
|
scs(check,"Short_t");
|
|
|
|
//Should be : FIXME
|
|
|
|
StreamerInfo* info = new StreamerInfo("TLeafS",1,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
info->add(new streamer_base("TLeaf","Leaf: description of a Branch data type",0,TLeaf_version));
|
|
info->add(new streamer_basic_type("fMinimum","Minimum value if leaf range is specified",56,streamer_info::SHORT,"Short_t"));
|
|
info->add(new streamer_basic_type("fMaximum","Maximum value if leaf range is specified",58,streamer_info::SHORT,"Short_t"));
|
|
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TLeafI");
|
|
//bases :
|
|
scs(check,"TLeaf");
|
|
//members :
|
|
scs(check,"fMinimum");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fMaximum");
|
|
scs(check,"Int_t");
|
|
|
|
//Should be : 3495201397U
|
|
|
|
StreamerInfo* info = new StreamerInfo("TLeafI",1,check);
|
|
a_infos.push_back(info);
|
|
|
|
// Elements :
|
|
info->add(new streamer_base("TLeaf","Leaf: description of a Branch data type",0,TLeaf_version));
|
|
info->add(new streamer_basic_type("fMinimum","Minimum value if leaf range is specified",56,streamer_info::INT,"Int_t"));
|
|
info->add(new streamer_basic_type("fMaximum","Maximum value if leaf range is specified",60,streamer_info::INT,"Int_t"));
|
|
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//name :
|
|
scs(check,"TLeafF");
|
|
//bases :
|
|
scs(check,"TLeaf");
|
|
//members :
|
|
scs(check,"fMinimum");
|
|
scs(check,"Float_t");
|
|
|
|
scs(check,"fMaximum");
|
|
scs(check,"Float_t");
|
|
|
|
//Should be 1366318032U
|
|
|
|
StreamerInfo* info = new StreamerInfo("TLeafF",1,check);
|
|
a_infos.push_back(info);
|
|
|
|
// Elements :
|
|
info->add(new streamer_base("TLeaf","Leaf: description of a Branch data type",0,TLeaf_version));
|
|
info->add(new streamer_basic_type("fMinimum","Minimum value if leaf range is specified",56,streamer_info::FLOAT,"Float_t"));
|
|
info->add(new streamer_basic_type("fMaximum","Maximum value if leaf range is specified",60,streamer_info::FLOAT,"Float_t"));
|
|
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TLeafD");
|
|
//bases :
|
|
scs(check,"TLeaf");
|
|
//members :
|
|
scs(check,"fMinimum");
|
|
scs(check,"Double_t");
|
|
|
|
scs(check,"fMaximum");
|
|
scs(check,"Double_t");
|
|
|
|
//Should be
|
|
|
|
StreamerInfo* info = new StreamerInfo("TLeafD",1,check);
|
|
a_infos.push_back(info);
|
|
|
|
// Elements :
|
|
info->add(new streamer_base("TLeaf","Leaf: description of a Branch data type",0,TLeaf_version));
|
|
info->add(new streamer_basic_type("fMinimum","Minimum value if leaf range is specified",56,streamer_info::DOUBLE,"Double_t"));
|
|
info->add(new streamer_basic_type("fMaximum","Maximum value if leaf range is specified",64,streamer_info::DOUBLE,"Double_t"));
|
|
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TLeafB");
|
|
//bases :
|
|
scs(check,"TLeaf");
|
|
//members :
|
|
scs(check,"fMinimum");
|
|
scs(check,"Char_t");
|
|
|
|
scs(check,"fMaximum");
|
|
scs(check,"Char_t");
|
|
|
|
//Should be : FIXME
|
|
|
|
StreamerInfo* info = new StreamerInfo("TLeafB",1,check);
|
|
a_infos.push_back(info);
|
|
// Elements :
|
|
info->add(new streamer_base("TLeaf","Leaf: description of a Branch data type",0,TLeaf_version));
|
|
info->add(new streamer_basic_type("fMinimum","Minimum value if leaf range is specified",56,streamer_info::CHAR,"Char_t"));
|
|
info->add(new streamer_basic_type("fMaximum","Maximum value if leaf range is specified",57,streamer_info::CHAR,"Char_t"));
|
|
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TLeafC");
|
|
//bases :
|
|
scs(check,"TLeaf");
|
|
//members :
|
|
scs(check,"fMinimum");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fMaximum");
|
|
scs(check,"Int_t");
|
|
|
|
//Should be : FIXME
|
|
|
|
StreamerInfo* info = new StreamerInfo("TLeafC",1,check);
|
|
a_infos.push_back(info);
|
|
|
|
// Elements :
|
|
info->add(new streamer_base("TLeaf","Leaf: description of a Branch data type",0,TLeaf_version));
|
|
info->add(new streamer_basic_type("fMinimum","Minimum value if leaf range is specified",56,streamer_info::INT,"Int_t"));
|
|
info->add(new streamer_basic_type("fMaximum","Maximum value if leaf range is specified",60,streamer_info::INT,"Int_t"));}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TLeafObject");
|
|
//bases :
|
|
scs(check,"TLeaf");
|
|
//members :
|
|
scs(check,"fVirtual");
|
|
scs(check,"Bool_t");
|
|
|
|
//Should be 2312661809U
|
|
|
|
StreamerInfo* info = new StreamerInfo("TLeafObject",4,check);
|
|
a_infos.push_back(info);
|
|
|
|
// Elements :
|
|
info->add(new streamer_base("TLeaf","Leaf: description of a Branch data type",0,TLeaf_version));
|
|
info->add(new streamer_basic_type("fVirtual","Support for Virtuality",64,streamer_info::UNSIGNED_CHAR,"Bool_t"));}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TLeafElement");
|
|
//bases :
|
|
scs(check,"TLeaf");
|
|
//members :
|
|
scs(check,"fID");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fType");
|
|
scs(check,"Int_t");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TLeafElement",1,check);
|
|
a_infos.push_back(info);
|
|
|
|
// Elements :
|
|
int offset = 0;
|
|
info->add(new streamer_base("TLeaf","Leaf: description of a Branch data type",offset,TLeaf_version));
|
|
offset += size_TLeaf;
|
|
|
|
offset += size_POINTER;
|
|
|
|
info->add(new streamer_basic_type("fID","element serial number in fInfo",offset,streamer_info::INT,"Int_t"));
|
|
offset += size_INT;
|
|
|
|
info->add(new streamer_basic_type("fType","leaf type",offset,streamer_info::INT,"Int_t"));
|
|
offset += size_INT;}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
/// histo /////////////////////////////////////////////////
|
|
///////////////////////////////////////////////////////////
|
|
short TAttAxis_version = 4;
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TAttAxis");
|
|
//members :
|
|
scs(check,"fNdivisions");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fAxisColor");
|
|
scs(check,"Color_t");
|
|
|
|
scs(check,"fLabelColor");
|
|
scs(check,"Color_t");
|
|
|
|
scs(check,"fLabelFont");
|
|
scs(check,"Style_t");
|
|
|
|
scs(check,"fLabelOffset");
|
|
scs(check,"Float_t");
|
|
|
|
scs(check,"fLabelSize");
|
|
scs(check,"Float_t");
|
|
|
|
scs(check,"fTickLength");
|
|
scs(check,"Float_t");
|
|
|
|
scs(check,"fTitleOffset");
|
|
scs(check,"Float_t");
|
|
|
|
scs(check,"fTitleSize");
|
|
scs(check,"Float_t");
|
|
|
|
scs(check,"fTitleColor");
|
|
scs(check,"Color_t");
|
|
|
|
scs(check,"fTitleFont");
|
|
scs(check,"Style_t");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TAttAxis",4,check);
|
|
a_infos.push_back(info);
|
|
|
|
// Elements :
|
|
//4 (virtual ~)
|
|
info->add(new streamer_basic_type("fNdivisions","Number of divisions(10000*n3 + 100*n2 + n1)",4,streamer_info::INT,"Int_t")); //4
|
|
info->add(new streamer_basic_type("fAxisColor","color of the line axis",8,streamer_info::SHORT,"Color_t")); //2
|
|
info->add(new streamer_basic_type("fLabelColor","color of labels",10,streamer_info::SHORT,"Color_t")); //2
|
|
info->add(new streamer_basic_type("fLabelFont","font for labels",12,streamer_info::SHORT,"Style_t")); //2
|
|
info->add(new streamer_basic_type("fLabelOffset","offset of labels",16,streamer_info::FLOAT,"Float_t")); //4
|
|
info->add(new streamer_basic_type("fLabelSize","size of labels",20,streamer_info::FLOAT,"Float_t")); //4
|
|
info->add(new streamer_basic_type("fTickLength","length of tick marks",24,streamer_info::FLOAT,"Float_t")); //4
|
|
info->add(new streamer_basic_type("fTitleOffset","offset of axis title",28,streamer_info::FLOAT,"Float_t")); //4
|
|
info->add(new streamer_basic_type("fTitleSize","size of axis title",32,streamer_info::FLOAT,"Float_t")); //4
|
|
info->add(new streamer_basic_type("fTitleColor","color of axis title",36,streamer_info::SHORT,"Color_t")); //2
|
|
info->add(new streamer_basic_type("fTitleFont","font for axis title",38,streamer_info::SHORT,"Style_t")); //2
|
|
//40
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TAxis");
|
|
//bases :
|
|
scs(check,"TNamed");
|
|
scs(check,"TAttAxis");
|
|
//members :
|
|
scs(check,"fNbins");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fXmin");
|
|
scs(check,"Axis_t");
|
|
|
|
scs(check,"fXmax");
|
|
scs(check,"Axis_t");
|
|
|
|
scs(check,"fXbins");
|
|
scs(check,"TArrayD");
|
|
|
|
scs(check,"fFirst");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fLast");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fTimeDisplay");
|
|
scs(check,"Bool_t");
|
|
|
|
scs(check,"fTimeFormat");
|
|
scs(check,"TString");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TAxis",6,check);
|
|
a_infos.push_back(info);
|
|
|
|
// Elements :
|
|
info->add(new streamer_base("TNamed","The basis for a named object (name, title)",0,TNamed_version)); //28
|
|
info->add(new streamer_base("TAttAxis","Axis attributes",28,TAttAxis_version)); //40
|
|
info->add(new streamer_basic_type("fNbins","Number of bins",68,streamer_info::INT,"Int_t")); //4
|
|
info->add(new streamer_basic_type("fXmin","low edge of first bin",72,streamer_info::DOUBLE,"Axis_t")); //8
|
|
info->add(new streamer_basic_type("fXmax","upper edge of last bin",80,streamer_info::DOUBLE,"Axis_t")); //8
|
|
info->add(new streamer_basic_type("fXbins","Bin edges array in X",88,streamer_info::OBJECT_ANY,"TArrayD")); //12
|
|
info->add(new streamer_basic_type("fFirst","first bin to display",100,streamer_info::INT,"Int_t")); //4
|
|
info->add(new streamer_basic_type("fLast","last bin to display",104,streamer_info::INT,"Int_t")); //4
|
|
info->add(new streamer_basic_type("fTimeDisplay","on/off displaying time values instead of numerics",108,streamer_info::UNSIGNED_CHAR,"Bool_t")); //4 (Bool_t = 1 + 3 for alignement)
|
|
info->add(new streamer_basic_type("fTimeFormat","Date&time format, ex: 09/12/99 12:34:00",112,streamer_info::TSTRING,"TString")); //8
|
|
//offset 120 //4
|
|
//offset 124 //4
|
|
//128
|
|
|
|
//v3-05-07 : 124 (stored) + 4 = 128
|
|
}
|
|
|
|
short TH1_version = 3;
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TH1");
|
|
//bases :
|
|
scs(check,"TNamed");
|
|
scs(check,"TAttLine");
|
|
scs(check,"TAttFill");
|
|
scs(check,"TAttMarker");
|
|
//members :
|
|
scs(check,"fNcells");
|
|
scs(check,"Int_t");
|
|
|
|
scs(check,"fXaxis");
|
|
scs(check,"TAxis");
|
|
|
|
scs(check,"fBarOffset");
|
|
scs(check,"Short_t");
|
|
|
|
scs(check,"fBarWidth");
|
|
scs(check,"Short_t");
|
|
|
|
scs(check,"fEntries");
|
|
scs(check,"Stat_t");
|
|
|
|
scs(check,"fTsumw");
|
|
scs(check,"Stat_t");
|
|
|
|
scs(check,"fTsumw2");
|
|
scs(check,"Stat_t");
|
|
|
|
scs(check,"fTsumwx");
|
|
scs(check,"Stat_t");
|
|
|
|
scs(check,"fTsumwx2");
|
|
scs(check,"Stat_t");
|
|
|
|
scs(check,"fMaximum");
|
|
scs(check,"Double_t");
|
|
|
|
scs(check,"fMinimum");
|
|
scs(check,"Double_t");
|
|
|
|
scs(check,"fNormFactor");
|
|
scs(check,"Double_t");
|
|
|
|
scs(check,"fContour");
|
|
scs(check,"TArrayD");
|
|
|
|
scs(check,"fSumw2");
|
|
scs(check,"TArrayD");
|
|
|
|
scs(check,"fOption");
|
|
scs(check,"TString");
|
|
|
|
scs(check,"fFunctions");
|
|
scs(check,"TList*");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TH1",TH1_version,check);
|
|
a_infos.push_back(info);
|
|
|
|
info->add(new streamer_base("TNamed","The basis for a named object (name, title)",0,TNamed_version)); //28
|
|
info->add(new streamer_base("TAttLine","Line attributes",28,TAttLine_version)); //12
|
|
info->add(new streamer_base("TAttFill","Fill area attributes",40,TAttFill_version)); //8
|
|
info->add(new streamer_base("TAttMarker","Marker attributes",48,TAttMarker_version)); //12
|
|
info->add(new streamer_basic_type("fNcells","number of bins(1D), cells (2D) +U/Overflows",60,streamer_info::INT,"Int_t")); //4
|
|
info->add(new streamer_basic_type("fXaxis","X axis descriptor",64,streamer_info::OBJECT_ANY,"TAxis")); //128
|
|
info->add(new streamer_basic_type("fYaxis","Y axis descriptor",192,streamer_info::OBJECT_ANY,"TAxis")); //128
|
|
info->add(new streamer_basic_type("fZaxis","Z axis descriptor",320,streamer_info::OBJECT_ANY,"TAxis")); //128
|
|
info->add(new streamer_basic_type("fBarOffset","(1000*offset) for bar charts or legos",448,streamer_info::SHORT,"Short_t"));//2
|
|
info->add(new streamer_basic_type("fBarWidth","(1000*width) for bar charts or legos",450,streamer_info::SHORT,"Short_t"));//2
|
|
info->add(new streamer_basic_type("fEntries","Number of entries",452,streamer_info::DOUBLE,"Stat_t"));//2
|
|
info->add(new streamer_basic_type("fTsumw","Total Sum of weights",460,streamer_info::DOUBLE,"Stat_t"));//8
|
|
info->add(new streamer_basic_type("fTsumw2","Total Sum of squares of weights",468,streamer_info::DOUBLE,"Stat_t"));//8
|
|
info->add(new streamer_basic_type("fTsumwx","Total Sum of weight*X",476,streamer_info::DOUBLE,"Stat_t"));//8
|
|
info->add(new streamer_basic_type("fTsumwx2","Total Sum of weight*X*X",484,streamer_info::DOUBLE,"Stat_t"));//8
|
|
info->add(new streamer_basic_type("fMaximum","Maximum value for plotting",492,streamer_info::DOUBLE,"Double_t"));//8
|
|
info->add(new streamer_basic_type("fMinimum","Minimum value for plotting",500,streamer_info::DOUBLE,"Double_t"));//8
|
|
info->add(new streamer_basic_type("fNormFactor","Normalization factor",508,streamer_info::DOUBLE,"Double_t"));//8
|
|
info->add(new streamer_basic_type("fContour","Array to display contour levels",516,streamer_info::OBJECT_ANY,"TArrayD"));//12
|
|
info->add(new streamer_basic_type("fSumw2","Array of sum of squares of weights",528,streamer_info::OBJECT_ANY,"TArrayD"));//12
|
|
info->add(new streamer_basic_type("fOption","histogram options",540,streamer_info::TSTRING,"TString"));//8
|
|
info->add(new streamer_basic_type("fFunctions","->Pointer to list of functions (fits and user)",548,streamer_info::OBJECT_ARROW,"TList*"));//4
|
|
//!fDirectory offset 552 : //4
|
|
//!fDimension offset 556 : //4
|
|
//!fIntegral offset 560 : //4
|
|
//!fPainter offset 564 : //4
|
|
//568
|
|
|
|
//v3-05-07 : 576 = 568 + 2 * 4 = ok
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TH1F");
|
|
//base :
|
|
scs(check,"TH1");
|
|
scs(check,"TArrayF");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TH1F",1,check);
|
|
a_infos.push_back(info);
|
|
info->add(new streamer_base("TH1","1-Dim histogram base class",0,TH1_version));//568
|
|
info->add(new streamer_base("TArrayF","Array of floats",568,TArrayF_version));//12
|
|
}
|
|
|
|
short TH1D_version = 1;
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TH1D");
|
|
//base :
|
|
scs(check,"TH1");
|
|
scs(check,"TArrayD");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TH1D",TH1D_version,check);
|
|
a_infos.push_back(info);
|
|
info->add(new streamer_base("TH1","1-Dim histogram base class",0,TH1_version));//568
|
|
info->add(new streamer_base("TArrayD","Array of doubles",568,TArrayD_version));//12
|
|
//580
|
|
|
|
//v3-05-07 : 588 = 576 + 12 = ok
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TProfile");
|
|
//base :
|
|
scs(check,"TH1D");
|
|
//members :
|
|
scs(check,"fBinEntries");
|
|
scs(check,"TArrayD");
|
|
|
|
scs(check,"fErrorMode");
|
|
scs(check,"EErrorType");//FIXME : ok ?
|
|
|
|
scs(check,"fYmin");
|
|
scs(check,"Double_t");
|
|
|
|
scs(check,"fYmax");
|
|
scs(check,"Double_t");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TProfile",3,check);
|
|
a_infos.push_back(info);
|
|
|
|
info->add(new streamer_base("TH1D","1-Dim histograms (one double per channel)",0,TH1D_version));//580
|
|
info->add(new streamer_basic_type("fBinEntries","number of entries per bin",580,streamer_info::OBJECT_ANY,"TArrayD"));//12
|
|
info->add(new streamer_basic_type("fErrorMode","Option to compute errors",592,streamer_info::DOUBLE,"EErrorType"));//4
|
|
info->add(new streamer_basic_type("fYmin","Lower limit in Y (if set)",596,streamer_info::DOUBLE,"Double_t"));//8
|
|
info->add(new streamer_basic_type("fYmax","Upper limit in Y (if set)",604,streamer_info::DOUBLE,"Double_t"));//8
|
|
//612
|
|
|
|
//v3-05-07 : 624 = 612 + 4 + 8 (diff TH1D) = ok
|
|
}
|
|
|
|
short TH2_version = 3;
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TH2");
|
|
//bases :
|
|
scs(check,"TH1");
|
|
//members :
|
|
scs(check,"fScaleFactor");
|
|
scs(check,"Double_t");
|
|
|
|
scs(check,"fTsumwy");
|
|
scs(check,"Double_t");
|
|
|
|
scs(check,"fTsumwy2");
|
|
scs(check,"Double_t");
|
|
|
|
scs(check,"fTsumwxy");
|
|
scs(check,"Double_t");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TH2",TH2_version,check);
|
|
a_infos.push_back(info);
|
|
|
|
info->add(new streamer_base("TH1","1-Dim histogram base class",0,TH1_version));//568
|
|
info->add(new streamer_basic_type("fScaleFactor","Scale Factor",576,streamer_info::DOUBLE,"Double_t"));//8
|
|
info->add(new streamer_basic_type("fTsumwy","Total Sum of weight*Y",584,streamer_info::DOUBLE,"Double_t"));//8
|
|
info->add(new streamer_basic_type("fTsumwy2","Total Sum of weight*Y*Y",592,streamer_info::DOUBLE,"Double_t"));//8
|
|
info->add(new streamer_basic_type("fTsumwxy","Total Sum of weight*X*Y",600,streamer_info::DOUBLE,"Double_t"));//8
|
|
//600
|
|
|
|
//v3-05-07 : <to be checked>
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TH2F");
|
|
//base :
|
|
scs(check,"TH2");
|
|
scs(check,"TArrayF");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TH2F",3,check);
|
|
a_infos.push_back(info);
|
|
|
|
info->add(new streamer_base("TH2","2-Dim histogram base class",0,TH2_version));//600
|
|
info->add(new streamer_base("TArrayF","Array of floats",600,TArrayF_version));//12
|
|
//612
|
|
|
|
}
|
|
|
|
{unsigned int check = 0;
|
|
//this :
|
|
scs(check,"TH2D");
|
|
//base :
|
|
scs(check,"TH2");
|
|
scs(check,"TArrayD");
|
|
|
|
StreamerInfo* info = new StreamerInfo("TH2D",3,check);
|
|
a_infos.push_back(info);
|
|
|
|
info->add(new streamer_base("TH2","2-Dim histogram base class",0,TH2_version));//600
|
|
info->add(new streamer_base("TArrayD","Array of doubles",600,TArrayD_version));//12
|
|
//612
|
|
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
}}
|
|
|
|
#endif
|