10#define ProofStdVect_cxx
25ProofStdVect::ProofStdVect()
39ProofStdVect::~ProofStdVect()
49void ProofStdVect::Begin(
TTree * )
58 if (fInput && fInput->FindObject(
"ProofStdVect_Create")) {
60 }
else if (
option.Contains(
"create")) {
66void ProofStdVect::SlaveBegin(
TTree * )
75 if (fInput && fInput->FindObject(
"ProofStdVect_Create")) {
77 }
else if (
option.Contains(
"create")) {
89 fFile = fProofFile->OpenFile(
"RECREATE");
90 if (fFile && fFile->IsZombie())
SafeDelete(fFile);
94 Info(
"SlaveBegin",
"could not create '%s': instance is invalid!", fProofFile->GetName());
99 fTree =
new TTree(
"stdvec",
"Tree with std vector");
100 fTree->Branch(
"Vb",&fVb);
101 fTree->Branch(
"Vfx",&fVfx);
102 fTree->Branch(
"Vfy",&fVfy);
104 fTree->SetDirectory(fFile);
112 fHgood =
new TH1F(
"Hgood",
"Good hits", 100., -2.5, 2.5);
113 fHbad =
new TH1F(
"Hbad",
"Bad hits", 100., -6., 6.);
114 fOutput->Add(fHgood);
141 if (!fTree)
return kTRUE;
148 for (
Int_t i = 0; i < nv; i++) {
149 std::vector<bool> vb;
150 std::vector<float> vfx, vfy;
153 for (
Int_t j = 0; j <
np; j++) {
162 vfy.push_back(
float(ym));
173 std::vector<std::vector<bool> >::iterator ivb;
174 for (ivb = fVb.begin(); ivb != fVb.end(); ivb++) {
178 std::vector<std::vector<float> >::iterator ivf;
179 for (ivf = fVfx.begin(); ivf != fVfx.end(); ivf++) {
183 for (ivf = fVfy.begin(); ivf != fVfy.end(); ivf++) {
191 for (
UInt_t i = 0; i < fVfyr->size(); i++) {
192 std::vector<bool> &vb = fVbr->at(i);
193 std::vector<float> &vfx = fVfxr->at(i);
194 std::vector<float> &vfy = fVfyr->at(i);
195 for (
UInt_t j = 0; j < vfy.size(); j++) {
196 Double_t ny = (vfy.at(j) - 5*vfx.at(j)) / (0.1 * 5 * vfx.at(j));
209void ProofStdVect::SlaveTerminate()
216 if (!fCreate)
return;
221 Error(
"SlaveTerminate",
"'tree' is undefined!");
226 if (fTree->GetEntries() > 0) {
230 fOutput->Add(fProofFile);
234 fTree->SetDirectory(
nullptr);
238 TUrl uf(*(fFile->GetEndpointUrl()));
247void ProofStdVect::Terminate()
262 if (fHbad) fHbad->
Draw();
264 if (fHgood) fHgood->
Draw();
270void ProofStdVect::Init(
TTree *tree)
290 fChain->SetMakeClass(1);
292 fChain->SetBranchAddress(
"Vb", &fVbr, &b_Vb);
293 fChain->SetBranchAddress(
"Vfx", &fVfxr, &b_Vfx);
294 fChain->SetBranchAddress(
"Vfy", &fVfyr, &b_Vfy);
299Bool_t ProofStdVect::Notify()
308 if (fCreate)
return kTRUE;
309 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.