Selector for generic processing with stdlib collections.
#define ProofStdVect_cxx
ProofStdVect::ProofStdVect()
{
fTree = nullptr;
fFile = nullptr;
fProofFile = nullptr;
fRandom = nullptr;
fHgood = nullptr;
fHbad = nullptr;
}
ProofStdVect::~ProofStdVect()
{
}
void ProofStdVect::Begin(
TTree * )
{
if (fInput && fInput->FindObject("ProofStdVect_Create")) {
}
else if (
option.Contains(
"create")) {
}
}
void ProofStdVect::SlaveBegin(
TTree * )
{
if (fInput && fInput->FindObject("ProofStdVect_Create")) {
}
else if (
option.Contains(
"create")) {
}
if (fCreate) {
fFile = fProofFile->OpenFile("RECREATE");
if (fFile && fFile->IsZombie())
SafeDelete(fFile);
if (!fFile) {
Info(
"SlaveBegin",
"could not create '%s': instance is invalid!", fProofFile->GetName());
return;
}
fTree =
new TTree(
"stdvec",
"Tree with std vector");
fTree->Branch("Vb",&fVb);
fTree->Branch("Vfx",&fVfx);
fTree->Branch("Vfy",&fVfy);
fTree->SetDirectory(fFile);
fTree->AutoSave();
} else {
fHgood =
new TH1F(
"Hgood",
"Good hits", 100., -2.5, 2.5);
fHbad =
new TH1F(
"Hbad",
"Bad hits", 100., -6., 6.);
fOutput->Add(fHgood);
fOutput->Add(fHbad);
}
}
{
if (fCreate) {
if (!fTree)
return kTRUE;
if (nv < 1) nv = 1;
for (
Int_t i = 0; i < nv; i++) {
std::vector<bool> vb;
std::vector<float> vfx, vfy;
vb.push_back(xb);
vfy.push_back(float(ym));
}
fVb.push_back(vb);
fVfx.push_back(vfx);
fVfy.push_back(vfy);
}
fTree->Fill();
std::vector<std::vector<bool> >::iterator ivb;
for (ivb = fVb.begin(); ivb != fVb.end(); ivb++) {
(*ivb).clear();
}
fVb.clear();
std::vector<std::vector<float> >::iterator ivf;
for (ivf = fVfx.begin(); ivf != fVfx.end(); ivf++) {
(*ivf).clear();
}
fVfx.clear();
for (ivf = fVfy.begin(); ivf != fVfy.end(); ivf++) {
(*ivf).clear();
}
fVfy.clear();
} else {
GetEntry(entry);
for (
UInt_t i = 0; i < fVfyr->size(); i++) {
std::vector<bool> &vb = fVbr->at(i);
std::vector<float> &vfx = fVfxr->at(i);
std::vector<float> &vfy = fVfyr->at(i);
for (
UInt_t j = 0; j < vfy.size(); j++) {
Double_t ny = (vfy.at(j) - 5*vfx.at(j)) / (0.1 * 5 * vfx.at(j));
if (vb.at(j) < 0.5)
fHbad->Fill(ny);
else
fHgood->Fill(ny);
}
}
}
}
void ProofStdVect::SlaveTerminate()
{
if (!fCreate) return;
if (fFile) {
if (!fTree) {
Error(
"SlaveTerminate",
"'tree' is undefined!");
return;
}
if (fTree->GetEntries() > 0) {
fFile->cd();
fTree->Write();
fProofFile->Print();
fOutput->Add(fProofFile);
} else {
}
fTree->SetDirectory(nullptr);
fFile->Close();
if (cleanup) {
TUrl uf(*(fFile->GetEndpointUrl()));
}
}
}
void ProofStdVect::Terminate()
{
if (fCreate) return;
if (fHbad) fHbad->
Draw();
if (fHgood) fHgood->
Draw();
}
void ProofStdVect::Init(
TTree *tree)
{
if (fCreate) return;
fVbr = nullptr;
fVfxr = nullptr;
fVfyr = nullptr;
if (!tree) return;
fChain->SetMakeClass(1);
fChain->SetBranchAddress("Vb", &fVbr, &b_Vb);
fChain->SetBranchAddress("Vfx", &fVfxr, &b_Vfx);
fChain->SetBranchAddress("Vfy", &fVfyr, &b_Vfy);
}
{
if (fCreate)
return kTRUE;
Info(
"Notify",
"processing file: %s",fChain->GetCurrentFile()->GetName());
}
Selector for generic processing with stdlib collections.
void Info(const char *location, const char *msgfmt,...)
Use this function for informational messages.
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t np
R__EXTERN TSystem * gSystem
TDirectory::TContext keeps track and restore the current directory.
1-D histogram with a float per channel (see TH1 documentation)
The most important graphics class in the ROOT system.
TVirtualPad * cd(Int_t subpadnumber=0) override
Set Current pad.
TVirtualPad * GetPad(Int_t subpadnumber) const override
Get a pointer to subpadnumber of this pad.
Class to steer the merging of files produced on the workers.
Random number generator class based on M.
virtual int Unlink(const char *name)
Unlink, i.e.
A TTree represents a columnar dataset.
This class represents a WWW compatible URL.
void Draw(Option_t *option="") override=0
Default Draw method for all objects.
Double_t Erfc(Double_t x)
Computes the complementary error function erfc(x).
Double_t Sqrt(Double_t x)
Returns the square root of x.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.