Macro illustrating I/O with Lorentz Vectors of floats.
The dictionary for LorentzVector of float is not in the libMathCore, therefore is generated when parsed the file with CLING.
To run this macro you must do
root[0] .L mathcoreVectorFloatIO.C+
root[1] runIt();
#include <iostream>
TFile f1(
"mathcoreVectorIO_F.root",
"RECREATE");
TTree t1(
"t1",
"Tree with new Float LorentzVector");
t1.Branch(
"LV branch",
"ROOT::Math::XYZTVectorF",&
v1);
for (
int i = 0; i <
n; ++i) {
double Px =
R.Gaus(0,10);
double Py =
R.Gaus(0,10);
double Pz =
R.Gaus(0,10);
double E =
R.Gaus(100,10);
v1->SetCoordinates(Px,Py,Pz,E);
}
std::cout <<
" Time for new Float Vector " << timer.
RealTime() <<
" " << timer.
CpuTime() << std::endl;
}
void read() {
TFile f1(
"mathcoreVectorIO_F.root");
t1->SetBranchAddress(
"LV branch",&
v1);
int n = (
int)
t1->GetEntries();
std::cout <<
" Tree Entries " <<
n << std::endl;
double etot=0;
for (
int i = 0; i <
n; ++i) {
}
std::cout <<
" Time for new Float Vector " << timer.
RealTime() <<
" " << timer.
CpuTime() << std::endl;
std::cout <<
" E average" <<
n<<
" " << etot <<
" " << etot/
double(
n) << endl;
}
void runIt() {
#if defined(__CLING__) && !defined(__ROOTCLING__)
cout << "This tutorial can run only using ACliC, you must run it by doing: " << endl;
cout << "\t .L tutorials/math/mathcoreVectorFloatIO.C+" << endl;
cout << "\t runIt()" << endl;
#endif
int nEvents = 100000;
write(nEvents);
read();
}
void mathcoreVectorFloatIO() {
#if defined(__CLING__) && !defined(__ROOTCLING__)
cout << "This tutorial can run only using ACliC, you must run it by doing: " << endl;
cout << "\t .L tutorials/math/mathcoreVectorFloatIO.C+" << endl;
cout << "\t runIt()" << endl;
#endif
}
#define R(a, b, c, d, e, f, g, h, i)
A file, usually with extension .root, that stores data and code in the form of serialized objects in ...
This is the base class for the ROOT Random number generators.
Double_t RealTime()
Stop the stopwatch (if it is running) and return the realtime (in seconds) passed between the start a...
void Start(Bool_t reset=kTRUE)
Start the stopwatch.
Double_t CpuTime()
Stop the stopwatch (if it is running) and return the cputime (in seconds) passed between the start an...
void Stop()
Stop the stopwatch.
A TTree represents a columnar dataset.
LorentzVector< PxPyPzE4D< float > > XYZTVectorF
LorentzVector based on x,y,z,t (or px,py,pz,E) coordinates in float precision with metric (-,...
- Author
- Lorenzo Moneta
Definition in file mathcoreVectorFloatIO.C.