46const int xbins_n = 83;
47const double xbins[xbins_n] = {
48 -5.191, -4.889, -4.716, -4.538, -4.363, -4.191, -4.013, -3.839, -3.664, -3.489, -3.314, -3.139, -2.964, -2.853,
49 -2.650, -2.500, -2.322, -2.172, -2.043, -1.930, -1.830, -1.740, -1.653, -1.566, -1.479, -1.392, -1.305, -1.218,
50 -1.131, -1.044, -0.957, -0.870, -0.783, -0.696, -0.609, -0.522, -0.435, -0.348, -0.261, -0.174, -0.087, 0.000,
51 0.087, 0.174, 0.261, 0.348, 0.435, 0.522, 0.609, 0.696, 0.783, 0.870, 0.957, 1.044, 1.131, 1.218,
52 1.305, 1.392, 1.479, 1.566, 1.653, 1.740, 1.830, 1.930, 2.043, 2.172, 2.322, 2.500, 2.650, 2.853,
53 2.964, 3.139, 3.314, 3.489, 3.664, 3.839, 4.013, 4.191, 4.363, 4.538, 4.716, 4.889, 5.191};
70 float GetEtaSize()
const {
return fEtaSize; }
71 float GetPhiSize()
const {
return fPhiSize; }
72 void SetEtaSize(
float iEtaSize) { fEtaSize = iEtaSize; }
73 void SetPhiSize(
float iPhiSize) { fPhiSize = iPhiSize; }
77 :
TParticle(pdg, status, mother1, mother2, daughter1, daughter2, px, py, pz, etot, 0, 0, 0, 0)
91 RecHit(
float pt,
float x,
float y,
float z) : fPt(
pt), fX(
x), fY(
y), fZ(z) {}
95class RCaloTower :
public TObject {
101 RCaloTower(
float eta,
float phi,
float et) : fEta(eta), fPhi(phi), fEt(et) {}
116 using REveCaloDataSliceSelector::ProcessSelection;
119 std::set<int> item_set;
121 for (
auto &cellId : sel_cells) {
122 fCaloData->GetCellData(cellId, cd);
125 for (
int t = 0; t < fCollection->GetNItems(); ++t) {
126 RCaloTower *tower = (RCaloTower *)fCollection->GetDataPtr(t);
127 if (tower->fEta > cd.fEtaMin && tower->fEta < cd.fEtaMax && tower->fPhi > cd.fPhiMin &&
128 tower->fPhi < cd.fPhiMax && fCollection->GetDataItem(t)->GetVisible()) {
134 fCollection->GetItemList()->RefSelectedSet() = item_set;
135 sel->NewElementPicked(fCollection->GetItemList()->GetElementId(), multi,
true, item_set);
138 using REveCaloDataSliceSelector::GetCellsFromSecondaryIndices;
141 TH2F *hist = fCaloData->GetHist(GetSliceIndex());
144 for (
auto &i : idcs) {
145 RCaloTower *tower = (RCaloTower *)fCollection->GetDataPtr(i);
146 int bin = hist->
FindBin(tower->fEta, tower->fPhi);
149 for (
size_t ci = 0; ci < out.size(); ++ci) {
150 if (out[ci].fTower == bin && out[ci].fSlice == GetSliceIndex()) {
151 float oldv = out[ci].fFraction;
152 out[ci].fFraction = oldv + frac;
169 std::vector<TList *> fListData;
175 auto baseHist =
new TH2F(
"dummy",
"dummy", fw3dlego::xbins_n - 1, fw3dlego::xbins, 72, -
TMath::Pi(),
TMath::Pi());
177 fCaloData->AddHistogram(baseHist);
180 fCaloData->SetSelector(selector);
190 list->SetName(
"Jets");
191 for (
int i = 1; i <=
N; ++i) {
192 double pt =
r.Uniform(0.5, 10);
193 double eta =
r.Uniform(-2.55, 2.55);
196 double px =
pt * std::cos(phi);
197 double py =
pt * std::sin(phi);
198 double pz =
pt * (1. / (std::tan(2 * std::atan(std::exp(-eta)))));
200 auto jet =
new Jet(0, 0, 0, 0, 0, 0, px, py, pz, std::sqrt(px * px + py * py + pz * pz + 80 * 80));
201 jet->SetEtaSize(
r.Uniform(0.02, 0.2));
202 jet->SetPhiSize(
r.Uniform(0.01, 0.3));
205 fListData.push_back(list);
208 void MakeParticles(
int N)
213 list->SetName(
"Tracks");
214 for (
int i = 1; i <=
N; ++i) {
215 double pt =
r.Uniform(0.5, 10);
216 double eta =
r.Uniform(-2.55, 2.55);
219 double px =
pt * std::cos(phi);
220 double py =
pt * std::sin(phi);
221 double pz =
pt * (1. / (std::tan(2 * std::atan(std::exp(-eta)))));
225 new TParticle(0, 0, 0, 0, 0, 0, px, py, pz, std::sqrt(px * px + py * py + pz * pz + 80 * 80), 0, 0, 0, 0);
227 int pdg = 11 * (
r.Integer(2) > 0 ? 1 : -1);
228 particle->SetPdgCode(pdg);
232 fListData.push_back(list);
235 void MakeRecHits(
int N)
240 list->SetName(
"RecHits");
242 for (
int i = 1; i <=
N; ++i) {
243 float pt =
r.Uniform(0.5, 10);
244 float x =
r.Uniform(-200, 200);
245 float y =
r.Uniform(-200, 200);
246 float z =
r.Uniform(-500, 500);
247 auto rechit =
new RecHit(
pt,
x,
y, z);
250 fListData.push_back(list);
255 for (
auto &
l : fListData)
268 TList *jlist = fListData[0];
271 fListData.push_back(elist);
274 fListData.push_back(hlist);
275 for (
int i = 0; i <= jlist->
GetLast(); ++i) {
277 float offX = j->Eta();
279 for (
int k = 0; k < 20; ++k) {
290 fCaloData->DataChanged();
300 bool HaveSingleProduct()
const override {
return false; }
303 void BuildItemViewType(
const Jet &dj,
int idx,
REveElement *iItemHolder,
const std::string &viewType,
308 jet->AddEllipticCone(dj.Eta(), dj.Phi(), dj.GetEtaSize(), dj.GetPhiSize());
309 SetupAddElement(jet, iItemHolder,
true);
310 jet->SetLineColor(jet->GetMainColor());
312 float size = 50.f * dj.Pt();
313 double theta = dj.Theta();
315 double phi = dj.Phi();
317 if (viewType ==
"Projected") {
318 static const float_t offr = 6;
319 float r_ecal = context->
GetMaxR() + offr;
320 float z_ecal = context->
GetMaxZ() + offr;
322 float transAngle =
abs(
atan(r_ecal / z_ecal));
325 if (theta < transAngle || 3.14 - theta < transAngle) {
326 z_ecal = context->
GetMaxZ() + offr / transAngle;
330 r = r_ecal /
sin(theta);
338 marker->SetScaleCenter(p1.
fX, p1.
fY, p1.
fZ);
339 marker->AddLine(p1, p2);
340 marker->SetLineWidth(4);
342 marker->AddMarker(0, 0.9);
344 SetupAddElement(marker, iItemHolder,
true);
345 marker->SetName(
Form(
"line %s %d", Collection()->GetCName(), idx));
349 using REveDataProxyBuilderBase::LocalModelChanges;
355 cone->SetLineColor(cone->GetMainColor());
367 SetupAddElement(track, iItemHolder,
true);
375 using REveElement::GetSelectionMaster;
378 if (fSelectionMaster) {
390 auto collection = Collection();
391 boxset->SetMainColor(collection->GetMainColor());
392 boxset->SetName(collection->GetCName());
393 boxset->SetPickable(
true);
394 boxset->SetAlwaysSecSelect(
true);
395 boxset->SetDetIdsAsSecondaryIndices(
true);
397 boxset->Reset(REveBoxSet::kBT_FreeBox,
true, collection->
GetNItems());
400#define RND_BOX(x) (Float_t) r.Uniform(-(x), (x))
410 Float_t verts[24] = {
x -
a + RND_BOX(
d),
y -
a + RND_BOX(
d), z -
a + RND_BOX(
d),
x -
a + RND_BOX(
d),
411 y +
a + RND_BOX(
d), z -
a + RND_BOX(
d),
x +
a + RND_BOX(
d),
y +
a + RND_BOX(
d),
412 z -
a + RND_BOX(
d),
x +
a + RND_BOX(
d),
y -
a + RND_BOX(
d), z -
a + RND_BOX(
d),
413 x -
a + RND_BOX(
d),
y -
a + RND_BOX(
d), z +
a + RND_BOX(
d),
x -
a + RND_BOX(
d),
414 y +
a + RND_BOX(
d), z +
a + RND_BOX(
d),
x +
a + RND_BOX(
d),
y +
a + RND_BOX(
d),
415 z +
a + RND_BOX(
d),
x +
a + RND_BOX(
d),
y -
a + RND_BOX(
d), z +
a + RND_BOX(
d)};
416 boxset->AddBox(verts);
418 boxset->DigitValue(item->
GetVisible() ? 1 : 0);
423 boxset->StampObjProps();
427 using REveDataProxyBuilderBase::Build;
430 fBoxSet =
new FWBoxSet();
431 buildBoxSet(fBoxSet);
435 using REveDataProxyBuilderBase::FillImpliedSelected;
436 void FillImpliedSelected(
REveElement::Set_t &impSet,
const std::set<int> &sec_idcs, Product *
p)
override
440 impSet.insert(fBoxSet);
443 using REveDataProxyBuilderBase::ModelChanges;
446 for (
auto &i : ids) {
447 auto digi = fBoxSet->GetDigit(i);
448 auto item = Collection()->GetDataItem(i);
449 fBoxSet->SetCurrentDigit(i);
451 fBoxSet->DigitValue(1);
454 fBoxSet->DigitValue(0);
457 fBoxSet->StampObjProps();
464 TH2F *fHist{
nullptr};
473 fHist =
new TH2F(
"caloHist",
"caloHist", fw3dlego::xbins_n - 1, fw3dlego::xbins, 72, -
M_PI,
M_PI);
474 fSliceIndex = fCaloData->AddHistogram(fHist);
476 fCaloData->RefSliceInfo(fSliceIndex)
477 .Setup(Collection()->GetCName(), 0., Collection()->GetMainColor(), Collection()->GetMainTransparency());
479 fCaloData->GetSelector()->AddSliceSelector(std::unique_ptr<REveCaloDataSliceSelector>(
480 new REveCaloTowerSliceSelector(fSliceIndex, Collection(), fCaloData)));
487 using REveDataProxyBuilderBase::Build;
493 fCaloData->RefSliceInfo(fSliceIndex)
494 .Setup(Collection()->GetCName(), 0., Collection()->GetMainColor(), Collection()->GetMainTransparency());
497 RCaloTower *tower = (RCaloTower *)collection->
GetDataPtr(
h);
502 fHist->Fill(tower->fEta, tower->fPhi, tower->fEt);
505 fCaloData->DataChanged();
508 using REveDataProxyBuilderBase::FillImpliedSelected;
509 void FillImpliedSelected(
REveElement::Set_t &impSet,
const std::set<int> &sec_idcs, Product *)
override
511 fCaloData->GetSelector()->SetActiveSlice(fSliceIndex);
512 impSet.insert(fCaloData);
513 fCaloData->FillImpliedSelectedSet(impSet, sec_idcs);
516 using REveDataProxyBuilderBase::ModelChanges;
519 BuildProduct(Collection(),
nullptr,
nullptr);
528class CollectionManager {
530 Event *fEvent{
nullptr};
532 std::vector<REveScene *> m_scenes;
535 std::vector<REveDataProxyBuilderBase *> m_builders;
538 bool m_inEventLoading{
false};
541 CollectionManager(Event *
event) : fEvent(
event)
554 m_viewContext->SetBarrel(
r, z);
555 m_viewContext->SetTrackPropagator(
prop);
560 tableInfo->table(
"TParticle").column(
"pt", 1,
"i.Pt()").column(
"eta", 3,
"i.Eta()").column(
"phi", 3,
"i.Phi()");
562 tableInfo->table(
"Jet")
563 .column(
"eta", 1,
"i.Eta()")
564 .column(
"phi", 1,
"i.Phi()")
565 .column(
"etasize", 2,
"i.GetEtaSize()")
566 .column(
"phisize", 2,
"i.GetPhiSize()");
568 tableInfo->table(
"RecHit").column(
"pt", 1,
"i.fPt");
570 tableInfo->table(
"RCaloTower").column(
"eta", 3,
"i.fEta").column(
"phi", 3,
"i.fPhi").column(
"Et", 3,
"i.fEt");
572 m_viewContext->SetTableViewInfo(tableInfo);
574 for (
auto &
c : eveMng->GetScenes()->RefChildren()) {
575 if (
c != eveMng->
GetGlobalScene() && strncmp(
c->GetCName(),
"Geometry", 8)) {
578 if (!strncmp(
c->GetCName(),
"Table", 5))
579 c->AddElement(m_viewContext->GetTableViewInfo());
582 m_collections = eveMng->
SpawnNewScene(
"Collections",
"Collections");
587 for (
auto &
l : fEvent->fListData) {
592 for (
int i = 0; i <=
l->GetLast(); ++i) {
600 collection->
AddItem(
l->At(i), pname.Data(),
"");
609 m_inEventLoading =
true;
611 for (
auto &el : m_collections->RefChildren()) {
613 SetDataItemsFromEvent(
c);
616 for (
auto proxy : m_builders) {
620 fEvent->fCaloData->DataChanged();
621 m_inEventLoading =
false;
626 m_collections->AddElement(collection);
629 SetDataItemsFromEvent(collection);
632 for (
auto scene : m_scenes) {
633 if (strncmp(scene->GetCName(),
"Tables", 5) == 0)
638 if (!strncmp(scene->GetCTitle(),
"Projected", 8)) {
644 m_builders.push_back(glBuilder);
649 tableBuilder->SetHaveAWindow(
true);
650 tableBuilder->SetCollection(collection);
651 REveElement *tablep = tableBuilder->CreateProduct(
"table-type", m_viewContext);
652 auto tableMng = m_viewContext->GetTableViewInfo();
654 tableMng->SetDisplayedCollection(collection->
GetElementId());
657 for (
auto s : m_scenes) {
658 if (strncmp(s->GetCTitle(),
"Table", 5) == 0) {
659 s->AddElement(tablep);
660 tableBuilder->Build();
663 tableMng->AddDelegate([=]() { tableBuilder->ConfigChanged(); });
664 m_builders.push_back(tableBuilder);
669 for (
int t = 0; t <
N; t++) {
670 auto te = tableEntries[t];
676 this->ModelChanged(collection, ids);
680 this->FillImpliedSelected(collection, impSelSet, sec_idcs);
684 void finishViewCreate()
686 auto mngTable = m_viewContext->GetTableViewInfo();
688 for (
auto &el : m_collections->RefChildren()) {
689 if (el->GetName() ==
"Tracks")
690 mngTable->SetDisplayedCollection(el->GetElementId());
697 if (m_inEventLoading)
700 for (
auto proxy : m_builders) {
701 if (proxy->Collection()->GetItemList() == itemList) {
703 proxy->ModelChanges(ids);
710 if (m_inEventLoading)
713 for (
auto proxy : m_builders) {
714 if (proxy->Collection()->GetItemList() == itemList) {
715 proxy->FillImpliedSelected(impSelSet, sec_idcs);
728 CollectionManager *fCMng;
731 EventManager(Event *
e, CollectionManager *
m) : fEvent(
e), fCMng(
m) {}
733 ~EventManager()
override {}
735 virtual void NextEvent()
746 FWSelectionDeviator() {}
748 using REveSelection::Deviator::DeviateSelection;
750 const std::set<int> &secondary_idcs)
override
757 ExecuteNewElementPicked(selection, colItems, multi,
true, colItems->RefSelectedSet());
768void collection_proxies(
bool proj =
true)
770 eveMng = REveManager::Create();
771 auto event =
new Event();
775 auto deviator = std::make_shared<FWSelectionDeviator>();
783 b1->SetShape(
new TGeoTube(kR_min, kR_max, kZ_d));
784 b1->SetMainColor(
kCyan);
785 b1->SetMainTransparency(90);
788 rhoZEventScene = eveMng->
SpawnNewScene(
"RhoZ Scene",
"Projected");
794 rhoZView->AddScene(rhoZEventScene);
795 auto pgeoScene = eveMng->
SpawnNewScene(
"Geometry projected");
796 rhoZView->AddScene(pgeoScene);
804 auto collectionMng =
new CollectionManager(
event);
809 trackCollection->
SetFilterExpr(
"i.Pt() > 4.1 && std::abs(i.Eta()) < 1");
810 collectionMng->addCollection(trackCollection,
new TParticleProxyBuilder(),
true);
816 collectionMng->addCollection(jetCollection,
new JetProxyBuilder());
822 collectionMng->addCollection(hitCollection,
new RecHitProxyBuilder(),
true);
826 calo3d->SetBarrelRadius(kR_max);
827 calo3d->SetEndCapPos(kZ_d);
828 calo3d->SetMaxTowerH(300);
835 collectionMng->addCollection(ecalCollection,
new CaloTowerProxyBuilder(
event->fCaloData));
840 collectionMng->addCollection(hcalCollection,
new CaloTowerProxyBuilder(
event->fCaloData));
843 auto eventMng =
new EventManager(
event, collectionMng);
844 eventMng->SetName(
"EventManager");
847 eveMng->
GetWorld()->
AddCommand(
"NextEvent",
"sap-icon://step", eventMng,
"NextEvent()");
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
bool Bool_t
Boolean (0=false, 1=true) (bool)
int Int_t
Signed integer 4 bytes (int)
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int)
float Float_t
Float 4 bytes (float)
double Double_t
Double 8 bytes.
#define ClassDef(name, id)
static unsigned int total
winID h TVirtualViewer3D TVirtualGLPainter p
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 winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t sel
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 r
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 winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h prop
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 winding char text const char depth char const char Int_t count const char cname
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 winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
R__EXTERN TRandom * gRandom
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
Collection of 3D primitives (fixed-size boxes, boxes of different sizes, or arbitrary sexto-epipeds,...
Visualization of a calorimeter event data in 2D.
Visualization of a calorimeter event data in 3D.
A central manager for calorimeter data of an event written in TH2F.
Cell data inner structure.
Base class for REveUtil visualization elements, providing hierarchy management, rendering control and...
Wrapper for TGeoShape with absolute positioning and color attributes allowing display of extracted TG...
Draws a jet cone with leading particle is specified in (eta,phi) and cone radius is given.
Implements constant magnetic filed that switches on given axial radius fR2 from vector fBIn to fBOut.
Manager class for steering of projections and managing projected objects.
Straight-line-set with extra scaling, useful for projectables that need to be scaled in accordance wi...
Eve representation of TGLScene.
Make sure there is a SINGLE running REveSelection for each selection type (select/highlight).
Holding structure for a number of track rendering parameters.
Visual representation of a track.
std::vector< CellId_t > vCellId_t
REveDataItemList * GetItemList()
void SetFilterExpr(const char *filter)
TClass * GetItemClass() const
void * GetDataPtr(Int_t i) const
void AddItem(void *data_ptr, const std::string &n, const std::string &t)
void SetItemClass(TClass *cls)
void SetMainColor(Color_t) override
Set main color of the element.
void AddTooltipExpression(const std::string &title, const std::string &expr, bool init=true)
void SetItemsChangeDelegate(ItemsChangeFunc_t)
void SetFillImpliedSelectedDelegate(FillImpliedSelectedFunc_t)
Color_t GetMainColor() const
Bool_t GetVisible() const
void SetHaveAWindow(bool)
virtual void SetCollection(REveDataCollection *)
virtual REveElement * CreateProduct(const std::string &viewType, const REveViewContext *)
const std::string & GetName() const
virtual void AddElement(REveElement *el)
Add el to the list of children.
virtual Bool_t GetRnrSelf() const
std::set< REveElement * > Set_t
ElementId_t GetElementId() const
REveScene * GetEventScene() const
REveSelection * GetHighlight() const
REveSelection * GetSelection() const
REveElement * FindElementById(ElementId_t id) const
Lookup ElementId in element map and return corresponding REveElement*.
REveScene * GetGlobalScene() const
REveScene * SpawnNewScene(const char *name, const char *title="")
Create a new scene.
REveViewer * SpawnNewViewer(const char *name, const char *title="")
Create a new GL viewer.
REveScene * GetWorld() const
void Show(const RWebDisplayArgs &args="")
Show eve manager in specified browser.
REveProjectionManager Manager class for steering of projections and managing projected objects.
virtual REveElement * ImportElements(REveElement *el, REveElement *ext_list=nullptr)
Recursively import elements and apply projection to the newly imported objects.
void SetImportEmpty(Bool_t ie)
void AddCommand(const std::string &name, const std::string &icon, const REveElement *element, const std::string &action)
SelectionSet_t & RefSelectedSet()
void SetDeviator(std::shared_ptr< Deviator > d)
void ClearSelection()
Clear selection if not empty.
REveTrackPropagator * GetPropagator() const
void SetCameraType(REveCamera::ECameraType type)
Set camera by type (backward compatibility with old API)
virtual void AddScene(REveScene *scene)
Add 'scene' to the list of scenes.
void SetName(const char *name)
TDirectory::TContext keeps track and restore the current directory.
virtual Int_t FindBin(Double_t x, Double_t y=0, Double_t z=0)
Return Global bin number corresponding to x,y,z.
static Bool_t AddDirectoryStatus()
Check whether TH1-derived classes should register themselves to the current gDirectory.
2-D histogram with a float per channel (see TH1 documentation)
Double_t GetBinContent(Int_t binx, Int_t biny) const override
void Add(TObject *obj) override
TObject * At(Int_t idx) const override
Returns the object at position idx. Returns 0 if idx is out of range.
const char * GetName() const override
Returns name of object.
Mother of all ROOT objects.
virtual const char * GetName() const
Returns name of object.
Description of the dynamic properties of a particle.
This is the base class for the ROOT Random number generators.
virtual Double_t Uniform(Double_t x1=1)
Returns a uniform deviate on the interval (0, x1).
virtual Int_t GetLast() const
Returns index of last object in collection.
RVec< PromoteType< T > > abs(const RVec< T > &v)
RVec< PromoteType< T > > cos(const RVec< T > &v)
RVec< PromoteType< T > > atan(const RVec< T > &v)
RVec< PromoteType< T > > sin(const RVec< T > &v)
Namespace for ROOT features in testing.
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)
double product(DoubleArray factors, std::size_t nFactors)
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
constexpr Double_t TwoPi()