Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TBranchProxy.h
Go to the documentation of this file.
1// @(#)root/treeplayer:$Id$
2// Author: Philippe Canal 01/06/2004
3
4/*************************************************************************
5 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers and al. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TBranchProxy
13#define ROOT_TBranchProxy
14
16#include "TTree.h"
17#include "TBranchElement.h"
18#include "TLeaf.h"
19#include "TClonesArray.h"
20#include "TString.h"
21#include "TError.h"
23#include "TNotifyLink.h"
24
25#include <algorithm>
26#include <string>
27#include <iostream>
28
29class TBranch;
31
32// Note we could protect the arrays more by introducing a class TArrayWrapper<class T> which somehow knows
33// its internal dimensions and check for them ...
34// template <class T> TArrayWrapper {
35// public:
36// TArrayWrapper(void *where, int dim1);
37// const T operator[](int i) {
38// if (i>=dim1) return 0;
39// return where[i];
40// };
41// };
42// 2D array would actually be a wrapper of a wrapper i.e. has a method TArrayWrapper<T> operator[](int i);
43
44namespace ROOT {
45namespace Internal {
46 ////////////////////////////////////////////////////////////////////////////////
47 /// String builder to be used in the constructors.
49 public:
51 TBranchProxyHelper(const char *left, const char *right = nullptr) :
52 fName() {
53 if (left) {
54 fName = left;
55 if (left[0]&&right && fName[fName.Length()-1]!='.') fName += ".";
56 }
57 if (right) {
58 fName += right;
59 }
60 }
61 operator const char*() { return fName.Data(); }
62 };
63
65} // namespace Internal
66
67// prevent access violation when executing the df017_vecOpsHEP.C tutorial with ROOT built in release mode
68// TODO: to be reviewed when updating Visual Studio or LLVM
69#if defined(_MSC_VER) && !defined(__clang__)
70#pragma optimize("", off)
71#endif
72
73namespace Detail {
75 protected:
76 Internal::TBranchProxyDirector *fDirector; // contain pointer to TTree and entry to be read
77
79 const Bool_t fIsMember : 1; // true if we proxy an unsplit data member
80 Bool_t fIsClone : 1; // true if we proxy the inside of a TClonesArray
81 Bool_t fIsaPointer : 1; // true if we proxy a data member of pointer type
82 Bool_t fHasLeafCount : 1;// true if we proxy a variable size leaf of a leaflist
83
84 const TString fBranchName; // name of the branch to read
85 TBranchProxy *fParent; // Proxy to a parent object
86
87 const TString fDataMember; // name of the (eventual) data member being proxied
88
89
90 TString fClassName; // class name of the object pointed to by the branch
91 TClass *fClass; // class name of the object pointed to by the branch
94 Int_t fOffset; // Offset inside the object
95 Int_t fArrayLength; // Number of element if the data is an array
96
97 TBranch *fBranch; // branch to read
98 union {
99 TBranchElement *fBranchCount; // eventual auxiliary branch (for example holding the size)
100 TLeaf *fLeafCount; // eventual auxiliary leaf (for example holding the size)
101 };
102
103 TNotifyLink<TBranchProxy> fNotify; // Callback object used by the TChain to update this proxy
104
105 Long64_t fRead; // Last entry read
106
107 void *fWhere; // memory location of the data
108 TVirtualCollectionProxy *fCollection; // Handle to the collection containing the data chunk.
109
110 public:
111 virtual void Print();
112
113 TBranchProxy();
114 TBranchProxy(Internal::TBranchProxyDirector* boss, const char* top, const char* name = nullptr);
115 TBranchProxy(Internal::TBranchProxyDirector* boss, const char *top, const char *name, const char *membername);
116 TBranchProxy(Internal::TBranchProxyDirector* boss, TBranchProxy *parent, const char* membername, const char* top = nullptr, const char* name = nullptr);
117 TBranchProxy(Internal::TBranchProxyDirector* boss, TBranch* branch, const char* membername);
118 TBranchProxy(Internal::TBranchProxyDirector* boss, const char* branchname, TBranch* branch, const char* membername);
119 virtual ~TBranchProxy();
120
121 TBranchProxy* GetProxy() { return this; }
122 const char* GetBranchName() const { return fBranchName; }
123
124 void Reset();
125
127 fRead = -1;
128 return Setup();
129 }
130
131 Bool_t Setup();
132
134 return fInitialized;
135 // return fLastTree && fCurrentTreeNumber == fDirector->GetTree()->GetTreeNumber() && fLastTree == fDirector->GetTree();
136 }
137
139 return fIsaPointer;
140 }
141
143 if (R__unlikely(fDirector == nullptr)) return false;
144
145 auto treeEntry = fDirector->GetReadEntry();
146 if (treeEntry != fRead) {
147 if (!IsInitialized()) {
148 if (!Setup()) {
149 ::Error("TBranchProxy::Read","%s",Form("Unable to initialize %s\n",fBranchName.Data()));
150 return kFALSE;
151 }
152 }
154 if (fParent) {
155 result = fParent->Read();
156 } else {
157 if (fHasLeafCount) {
158 if (fBranch != fLeafCount->GetBranch())
159 result &= (-1 != fLeafCount->GetBranch()->GetEntry(treeEntry));
160 } else if (fBranchCount) {
161 result &= (-1 != fBranchCount->GetEntry(treeEntry));
162 }
163 result &= (-1 != fBranch->GetEntry(treeEntry));
164 }
165 fRead = treeEntry;
167 fCollection->PopProxy(); // works even if no proxy env object was set.
168 if (IsaPointer()) {
169 fCollection->PushProxy( *(void**)fWhere );
170 } else {
172 }
173 }
174 return result;
175 } else {
176 return IsInitialized();
177 }
178 }
179
180private:
182
183 enum class EReadType {
184 kDefault,
195 };
196
198 if (fParent) {
199 if (!fCollection) {
201 } else {
202 if (IsaPointer()) {
204 } else {
206 }
207 }
208 } if (fHasLeafCount) {
209 return EReadType::kDefault;
210 } else {
211 if (fBranchCount) {
212 if (fCollection) {
213 if (IsaPointer()) {
215 } else {
217 }
218 } else {
220 }
221
222 } else {
223 if (fCollection) {
224 if (IsaPointer()) {
226 } else {
228 }
229 } else {
231 }
232 }
233 }
234 return EReadType::kDefault;
235 }
236
238 return false;
239 }
240
242 auto treeEntry = fDirector->GetReadEntry();
243 if (treeEntry != fRead) {
244 const Bool_t result = fParent->Read();
245 fRead = treeEntry;
246 return result;
247 } else {
248 return IsInitialized();
249 }
250 }
251
253 auto treeEntry = fDirector->GetReadEntry();
254 if (treeEntry != fRead) {
255 const Bool_t result = fParent->Read();
256 fRead = treeEntry;
257 fCollection->PopProxy(); // works even if no proxy env object was set.
259 return result;
260 } else {
261 return IsInitialized();
262 }
263 }
264
266 auto treeEntry = fDirector->GetReadEntry();
267 if (treeEntry != fRead) {
268 const Bool_t result = fParent->Read();
269 fRead = treeEntry;
270 fCollection->PopProxy(); // works even if no proxy env object was set.
271 fCollection->PushProxy( *(void**)fWhere );
272 return result;
273 } else {
274 return IsInitialized();
275 }
276 }
277
279 auto treeEntry = fDirector->GetReadEntry();
280 if (treeEntry != fRead) {
281 Bool_t result = (-1 != fBranch->GetEntry(treeEntry));
282 fRead = treeEntry;
283 fCollection->PopProxy(); // works even if no proxy env object was set.
284 fCollection->PushProxy( *(void**)fWhere );
285 return result;
286 } else {
287 return IsInitialized();
288 }
289 }
290
292 auto treeEntry = fDirector->GetReadEntry();
293 if (treeEntry != fRead) {
294 Bool_t result = (-1 != fBranch->GetEntry(treeEntry));
295 fRead = treeEntry;
296 fCollection->PopProxy(); // works even if no proxy env object was set.
298 return result;
299 } else {
300 return IsInitialized();
301 }
302 }
303
305 auto treeEntry = fDirector->GetReadEntry();
306 if (treeEntry != fRead) {
307 Bool_t result = (-1 != fBranch->GetEntry(treeEntry));
308 fRead = treeEntry;
309 return result;
310 } else {
311 return IsInitialized();
312 }
313 }
314
316 auto treeEntry = fDirector->GetReadEntry();
317 if (treeEntry != fRead) {
318 Bool_t result = (-1 != fBranchCount->GetEntry(treeEntry));
319 result &= (-1 != fBranch->GetEntry(treeEntry));
320 fRead = treeEntry;
321 fCollection->PopProxy(); // works even if no proxy env object was set.
322 fCollection->PushProxy( *(void**)fWhere );
323 return result;
324 } else {
325 return IsInitialized();
326 }
327 }
328
330 auto treeEntry = fDirector->GetReadEntry();
331 if (treeEntry != fRead) {
332 Bool_t result = (-1 != fBranchCount->GetEntry(treeEntry));
333 result &= (-1 != fBranch->GetEntry(treeEntry));
334 fRead = treeEntry;
335 fCollection->PopProxy(); // works even if no proxy env object was set.
337 return result;
338 } else {
339 return IsInitialized();
340 }
341 }
342
344 auto treeEntry = fDirector->GetReadEntry();
345 if (treeEntry != fRead) {
346 Bool_t result = (-1 != fBranchCount->GetEntry(treeEntry));
347 result &= (-1 != fBranch->GetEntry(treeEntry));
348 fRead = treeEntry;
349 return result;
350 } else {
351 return IsInitialized();
352 }
353 }
354
355public:
356
358 if (R__unlikely(fDirector == nullptr)) return false;
359
360 auto treeEntry = fDirector->GetReadEntry();
361 if (treeEntry != fRead) {
362 if (!IsInitialized()) {
363 if (!Setup()) {
364 ::Error("TBranchProxy::ReadEntries","%s",Form("Unable to initialize %s\n",fBranchName.Data()));
365 return false;
366 }
367 }
369 else {
370 if (fBranchCount) {
371 fBranchCount->TBranch::GetEntry(treeEntry);
372 }
373 fBranch->TBranch::GetEntry(treeEntry);
374 }
375 // NO - we only read the entries, not the contained objects!
376 // fRead = treeEntry;
377 }
378 return IsInitialized();
379 }
380
381 virtual Int_t GetEntries() {
382 if (!ReadEntries()) return 0;
383 if (fHasLeafCount) {
384 return *(Int_t*)fLeafCount->GetValuePointer();
385 } else if (fBranchCount) {
386 return fBranchCount->GetNdata();
387 } else {
388 return 1;
389 }
390 }
391
393 return fArrayLength;
394 }
395
397 if (!fDirector) return nullptr;
398
399 if (fDirector->GetReadEntry() != fRead) {
400 if (!IsInitialized()) {
401 if (!Setup()) {
402 return nullptr;
403 }
404 }
405 }
406 return fClass;
407 }
408
409 void* GetWhere() const { return fWhere; } // intentionally non-virtual
410
411 /// Return the address of the element number i. Returns `nullptr` for non-collections. It assumed that Setip() has
412 /// been called.
413 virtual void *GetAddressOfElement(UInt_t /*i*/) {
414 return nullptr;
415 }
416
418
419 // protected:
420 virtual void *GetStart(UInt_t /*i*/=0) {
421 // return the address of the start of the object being proxied. Assumes
422 // that Setup() has been called.
423
424 if (fParent) {
425 fWhere = ((unsigned char*)fParent->GetStart()) + fMemberOffset;
426 }
427 if (IsaPointer()) {
428 if (fWhere) return *(void**)fWhere;
429 else return nullptr;
430 } else {
431 return fWhere;
432 }
433 }
434
435 void *GetClaStart(UInt_t i=0) {
436 // return the address of the start of the object being proxied. Assumes
437 // that Setup() has been called. Assumes the object containing this data
438 // member is held in TClonesArray.
439
440 char *location;
441
442 if (fIsClone) {
443
444 TClonesArray *tca;
445 tca = (TClonesArray*)GetStart();
446
447 if (!tca || tca->GetLast()<(Int_t)i) return nullptr;
448
449 location = (char*)tca->At(i);
450
451 return location;
452
453 } else if (fParent) {
454
455 //tcaloc = ((unsigned char*)fParent->GetStart());
456 location = (char*)fParent->GetClaStart(i);
457
458 } else {
459
460 void *tcaloc;
461 tcaloc = fWhere;
462 TClonesArray *tca;
463 tca = (TClonesArray*)tcaloc;
464
465 if (tca->GetLast()<(Int_t)i) return nullptr;
466
467 location = (char*)tca->At(i);
468 }
469
470 if (location) location += fOffset;
471 else return nullptr;
472
473 if (IsaPointer()) {
474 return *(void**)(location);
475 } else {
476 return location;
477 }
478
479 }
480
481 void *GetStlStart(UInt_t i=0) {
482 // return the address of the start of the object being proxied. Assumes
483 // that Setup() has been called. Assumes the object containing this data
484 // member is held in STL Collection.
485
486 char *location = nullptr;
487
488 if (fCollection) {
489
490 if (fCollection->Size()<i) return nullptr;
491
492 location = (char*)fCollection->At(i);
493
494 // return location;
495
496 } else if (fParent) {
497
498 //tcaloc = ((unsigned char*)fParent->GetStart());
499 location = (char*)fParent->GetStlStart(i);
500
501 } else {
502
503 R__ASSERT(0);
504 //void *tcaloc;
505 //tcaloc = fWhere;
506 //TClonesArray *tca;
507 //tca = (TClonesArray*)tcaloc;
508
509 //if (tca->GetLast()<i) return nullptr;
510
511 //location = (char*)tca->At(i);
512 }
513
514 if (location) location += fOffset;
515 else return nullptr;
516
517 if (IsaPointer()) {
518 return *(void**)(location);
519 } else {
520 return location;
521 }
522
523 }
524
525 Int_t GetOffset() { return fOffset; }
526 };
527} // namespace Detail
528
529#if defined(_MSC_VER) && !defined(__clang__)
530#pragma optimize("", on)
531#endif
532
533namespace Internal {
534
535 ////////////////////////////////////////////////////////////////////////////////
536 /// Concrete Implementation of the branch proxy around the data members which are array of char
538 public:
539 void Print() override {
541 std::cout << "fWhere " << fWhere << std::endl;
542 if (fWhere) std::cout << "value? " << *(unsigned char*)GetStart() << std::endl;
543 }
544
546 TArrayCharProxy() = default; // work around bug in GCC < 7
547 ~TArrayCharProxy() override = default;
548
550 if (!Read()) return nullptr;
551 unsigned char* str = (unsigned char*)GetStart();
552 return str + i;
553 }
554
555 unsigned char At(UInt_t i) {
556 static unsigned char default_val = {};
557 if (unsigned char* elAddr = (unsigned char*)GetAddressOfElement(i)) {
558 // should add out-of bound test
559 return *elAddr;
560 }
561 return default_val;
562 }
563
564 unsigned char operator [](Int_t i) {
565 return At(i);
566 }
567
568 unsigned char operator [](UInt_t i) {
569 return At(i);
570 }
571
572 operator const char*() {
573 if (!Read()) return "";
574 return (const char*)GetStart();
575 }
576
577 const char* Data() {
578 if (!Read()) return "";
579 return (const char*)GetStart();
580 }
581
582 const char* c_str() {
583 if (!Read()) return "";
584 return (const char*)GetStart();
585 }
586
587 operator std::string() {
588 if (!Read()) return "";
589 return std::string((const char*)GetStart());
590 }
591
592 };
593
594 ////////////////////////////////////////////////////////////////////////////////
595 /// Base class for the proxy around object in TClonesArray.
597 public:
598 void Print() override {
600 std::cout << "fWhere " << fWhere << std::endl;
601 if (fWhere) {
602 if (IsaPointer()) {
603 std::cout << "location " << *(TClonesArray**)fWhere << std::endl;
604 } else {
605 std::cout << "location " << fWhere << std::endl;
606 }
607 }
608 }
609
611 TClaProxy() = default; // work around bug in GCC < 7
612 ~TClaProxy() override = default;
613
615 if (!Read()) return nullptr;
616 return (TClonesArray*)GetStart();
617 }
618
619 Int_t GetEntries() override {
620 if (!ReadEntries()) return 0;
622 if (arr) return arr->GetEntries();
623 return 0;
624 }
625
627 if (!Read()) return nullptr;
628 if (!fWhere) return nullptr;
629 return GetClaStart(i);
630 }
631
632 const TClonesArray* operator->() { return GetPtr(); }
633
634 };
635
636 ////////////////////////////////////////////////////////////////////////////////
637 /// Base class for the proxy around STL containers.
639 public:
640 void Print() override {
642 std::cout << "fWhere " << fWhere << std::endl;
643 if (fWhere) {
644 if (IsaPointer()) {
645 std::cout << "location " << *(TClonesArray**)fWhere << std::endl;
646 } else {
647 std::cout << "location " << fWhere << std::endl;
648 }
649 }
650 }
651
653 TStlProxy() = default; // work around bug in GCC < 7
654 ~TStlProxy() override = default;
655
657 if (!Read()) return nullptr;
658 return GetCollection();
659 }
660
661 Int_t GetEntries() override {
662 if (!ReadEntries()) return 0;
663 return GetPtr()->Size();
664 }
665
667 if (!Read()) return nullptr;
668 if (!fWhere) return nullptr;
669 return GetStlStart(i);
670 }
671
673
674 };
675
676 ////////////////////////////////////////////////////////////////////////////////
677 /// Template of the proxy around objects.
678 template <class T>
680 public:
681 void Print() override {
683 std::cout << "fWhere " << fWhere << std::endl;
684 if (fWhere) std::cout << "value? " << *(T*)GetStart() << std::endl;
685 }
686
688 TImpProxy() = default; // work around bug in GCC < 7
689 ~TImpProxy() override = default;
690
691 operator T() {
692 if (!Read()) return 0;
693 return *(T*)GetStart();
694 }
695
696 // For now explicitly disable copying into the value (i.e. the proxy is read-only).
697 TImpProxy(T) = delete;
698 TImpProxy &operator=(T) = delete;
699
700 };
701
702 ////////////////////////////////////////////////////////////////////////////////
703 /// Helper template to be able to determine and
704 /// use array dimensions.
705 template <class T, int d = 0> struct TArrayType {
706 typedef T type_t;
707 typedef T array_t[d];
708 static constexpr int gSize = d;
709 };
710 ////////////////////////////////////////////////////////////////////////////////
711 /// Helper class for proxy around multi dimension array
712 template <class T> struct TArrayType<T,0> {
713 typedef T type_t;
714 typedef T array_t;
715 static constexpr int gSize = 0;
716 };
717 ////////////////////////////////////////////////////////////////////////////////
718 /// Helper class for proxy around multi dimension array
719 template <class T, int d> struct TMultiArrayType {
720 typedef typename T::type_t type_t;
721 typedef typename T::array_t array_t[d];
722 static constexpr int gSize = d;
723 };
724
725 ////////////////////////////////////////////////////////////////////////////////
726 /// Template for concrete implementation of proxy around array of T
727 template <class T>
729 public:
731 TArrayProxy() = default; // work around bug in GCC < 7
732 ~TArrayProxy() override = default;
733
734 typedef typename T::array_t array_t;
735 typedef typename T::type_t type_t;
736
737 void Print() override {
739 std::cout << "fWhere " << GetWhere() << std::endl;
740 if (GetWhere()) std::cout << "value? " << *(type_t*)GetWhere() << std::endl;
741 }
742
743 Int_t GetEntries() override {
744 return T::gSize;
745 }
746
748 if (!Read()) return nullptr;
749 if (array_t *arr = (array_t*)((type_t*)(GetStart())))
750 return &arr[i];
751 return nullptr;
752 }
753
754 const array_t &At(UInt_t i) {
755 static array_t default_val;
756 // should add out-of bound test
757 if (array_t *arr = (array_t*)GetAddressOfElement(i))
758 return *arr;
759 return default_val;
760 }
761
762 const array_t &operator [](Int_t i) { return At(i); }
763 const array_t &operator [](UInt_t i) { return At(i); }
764 };
765
766 ////////////////////////////////////////////////////////////////////////////////
767 /// Template of the Concrete Implementation of the branch proxy around TClonesArray of T
768 template <class T>
769 class TClaImpProxy : public TClaProxy {
770 public:
771
772 // void Print() override {
773 // TClaProxy::Print();
774 // }
775
777 TClaImpProxy() = default; // work around bug in GCC < 7
778 ~TClaImpProxy() override = default;
779
780 const T& At(UInt_t i) {
781 static T default_val;
782 if (void* addr = GetAddressOfElement(i))
783 return *(T*)addr;
784 return default_val;
785 }
786
787 const T& operator [](Int_t i) { return At(i); }
788 const T& operator [](UInt_t i) { return At(i); }
789
790 // For now explicitly disable copying into the value (i.e. the proxy is read-only).
791 TClaImpProxy(T) = delete;
793
794 };
795
796 ////////////////////////////////////////////////////////////////////////////////
797 /// Template of the Concrete Implementation of the branch proxy around an stl container of T
798 template <class T>
799 class TStlImpProxy : public TStlProxy {
800 public:
801
802 // void Print() override {
803 // TBranchProxy::Print();
804 // }
805
807 TStlImpProxy() = default; // work around bug in GCC < 7
808 ~TStlImpProxy() override = default;
809
810 const T& At(UInt_t i) {
811 static T default_val;
812 if (void* addr = GetAddressOfElement(i))
813 return *(T*)addr;
814 return default_val;
815 }
816
817 const T& operator [](Int_t i) { return At(i); }
818 const T& operator [](UInt_t i) { return At(i); }
819
820 // For now explicitly disable copying into the value (i.e. the proxy is read-only).
821 TStlImpProxy(T) = delete;
823
824 };
825
826 ////////////////////////////////////////////////////////////////////////////////
827 /// Template of the Concrete Implementation of the branch proxy around an TClonesArray of array of T
828 template <class T>
829 class TClaArrayProxy : public TClaProxy {
830 public:
831 typedef typename T::array_t array_t;
832 typedef typename T::type_t type_t;
833
834 // void Print() override {
835 // TClaProxy::Print();
836 // }
837
839 TClaArrayProxy() = default; // work around bug in GCC < 7
840 ~TClaArrayProxy() override = default;
841
842 /* const */ array_t *At(UInt_t i) {
843 static array_t default_val;
844 if (array_t* ptr = (array_t*)GetAddressOfElement(i))
845 return ptr; // no de-ref!
846
847 return &default_val;
848 }
849
850 /* const */ array_t *operator [](Int_t i) { return At(i); }
851 /* const */ array_t *operator [](UInt_t i) { return At(i); }
852 };
853
854
855 ////////////////////////////////////////////////////////////////////////////////
856 /// Template of the Concrete Implementation of the branch proxy around an stl container of array of T
857 template <class T>
858 class TStlArrayProxy : public TStlProxy {
859 public:
860 typedef typename T::array_t array_t;
861 typedef typename T::type_t type_t;
862
863 // void Print() override {
864 // TBranchProxy::Print();
865 // }
866
868 TStlArrayProxy() = default; // work around bug in GCC < 7
869 ~TStlArrayProxy() override = default;
870
871 /* const */ array_t *At(UInt_t i) {
872 static array_t default_val;
873 if (array_t* ptr = (array_t*)GetAddressOfElement(i))
874 return ptr; // no de-ref!
875 return &default_val;
876 }
877
878 /* const */ array_t *operator [](Int_t i) { return At(i); }
879 /* const */ array_t *operator [](UInt_t i) { return At(i); }
880 };
881
882 //TImpProxy<TObject> d;
883 typedef TImpProxy<Double_t> TDoubleProxy; // Concrete Implementation of the branch proxy around the data members which are double
884 typedef TImpProxy<Double32_t> TDouble32Proxy; // Concrete Implementation of the branch proxy around the data members which are double32
885 typedef TImpProxy<Float_t> TFloatProxy; // Concrete Implementation of the branch proxy around the data members which are float
886 typedef TImpProxy<Float16_t> TFloat16Proxy; // Concrete Implementation of the branch proxy around the data members which are float16
887 typedef TImpProxy<UInt_t> TUIntProxy; // Concrete Implementation of the branch proxy around the data members which are unsigned int
888 typedef TImpProxy<ULong_t> TULongProxy; // Concrete Implementation of the branch proxy around the data members which are unsigned long
889 typedef TImpProxy<ULong64_t> TULong64Proxy; // Concrete Implementation of the branch proxy around the data members which are unsigned long long
890 typedef TImpProxy<UShort_t> TUShortProxy; // Concrete Implementation of the branch proxy around the data members which are unsigned short
891 typedef TImpProxy<UChar_t> TUCharProxy; // Concrete Implementation of the branch proxy around the data members which are unsigned char
892 typedef TImpProxy<Int_t> TIntProxy; // Concrete Implementation of the branch proxy around the data members which are int
893 typedef TImpProxy<Long_t> TLongProxy; // Concrete Implementation of the branch proxy around the data members which are long
894 typedef TImpProxy<Long64_t> TLong64Proxy; // Concrete Implementation of the branch proxy around the data members which are long long
895 typedef TImpProxy<Short_t> TShortProxy; // Concrete Implementation of the branch proxy around the data members which are short
896 typedef TImpProxy<Char_t> TCharProxy; // Concrete Implementation of the branch proxy around the data members which are char
897 typedef TImpProxy<Bool_t> TBoolProxy; // Concrete Implementation of the branch proxy around the data members which are bool
898
899 typedef TArrayProxy<TArrayType<Double_t> > TArrayDoubleProxy; // Concrete Implementation of the branch proxy around the data members which are array of double
900 typedef TArrayProxy<TArrayType<Double32_t> > TArrayDouble32Proxy; // Concrete Implementation of the branch proxy around the data members which are array of double32
901 typedef TArrayProxy<TArrayType<Float_t> > TArrayFloatProxy; // Concrete Implementation of the branch proxy around the data members which are array of float
902 typedef TArrayProxy<TArrayType<Float16_t> > TArrayFloat16Proxy; // Concrete Implementation of the branch proxy around the data members which are array of float16
903 typedef TArrayProxy<TArrayType<UInt_t> > TArrayUIntProxy; // Concrete Implementation of the branch proxy around the data members which are array of unsigned int
904 typedef TArrayProxy<TArrayType<ULong_t> > TArrayULongProxy; // Concrete Implementation of the branch proxy around the data members which are array of unsigned long
905 typedef TArrayProxy<TArrayType<ULong64_t> > TArrayULong64Proxy; // Concrete Implementation of the branch proxy around the data members which are array of unsigned long long
906 typedef TArrayProxy<TArrayType<UShort_t> > TArrayUShortProxy; // Concrete Implementation of the branch proxy around the data members which are array of unsigned short
907 typedef TArrayProxy<TArrayType<UChar_t> > TArrayUCharProxy; // Concrete Implementation of the branch proxy around the data members which are array of unsigned char
908 typedef TArrayProxy<TArrayType<Int_t> > TArrayIntProxy; // Concrete Implementation of the branch proxy around the data members which are array of int
909 typedef TArrayProxy<TArrayType<Long_t> > TArrayLongProxy; // Concrete Implementation of the branch proxy around the data members which are array of long
910 typedef TArrayProxy<TArrayType<Long64_t> > TArrayLong64Proxy; // Concrete Implementation of the branch proxy around the data members which are array of long long
911 typedef TArrayProxy<TArrayType<UShort_t> > TArrayShortProxy; // Concrete Implementation of the branch proxy around the data members which are array of short
912 //specialized ! typedef TArrayProxy<TArrayType<Char_t> > TArrayCharProxy; // Concrete Implementation of the branch proxy around the data members which are array of char
913 typedef TArrayProxy<TArrayType<Bool_t> > TArrayBoolProxy; // Concrete Implementation of the branch proxy around the data members which are array of bool
914
915 typedef TClaImpProxy<Double_t> TClaDoubleProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are double
916 typedef TClaImpProxy<Double32_t> TClaDouble32Proxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are double32
917 typedef TClaImpProxy<Float_t> TClaFloatProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are float
918 typedef TClaImpProxy<Float16_t> TClaFloat16Proxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are float16
919 typedef TClaImpProxy<UInt_t> TClaUIntProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are unsigned int
920 typedef TClaImpProxy<ULong_t> TClaULongProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are unsigned long
921 typedef TClaImpProxy<ULong64_t> TClaULong64Proxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are unsigned long long
922 typedef TClaImpProxy<UShort_t> TClaUShortProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are unsigned short
923 typedef TClaImpProxy<UChar_t> TClaUCharProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are unsigned char
924 typedef TClaImpProxy<Int_t> TClaIntProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are int
925 typedef TClaImpProxy<Long_t> TClaLongProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are long
926 typedef TClaImpProxy<Long64_t> TClaLong64Proxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are long long
927 typedef TClaImpProxy<Short_t> TClaShortProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are short
928 typedef TClaImpProxy<Char_t> TClaCharProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are char
929 typedef TClaImpProxy<Bool_t> TClaBoolProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are bool
930
931 typedef TClaArrayProxy<TArrayType<Double_t> > TClaArrayDoubleProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are array of double
932 typedef TClaArrayProxy<TArrayType<Double32_t> > TClaArrayDouble32Proxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are array of double32
933 typedef TClaArrayProxy<TArrayType<Float_t> > TClaArrayFloatProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are array of float
934 typedef TClaArrayProxy<TArrayType<Float16_t> > TClaArrayFloat16Proxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are array of float16
935 typedef TClaArrayProxy<TArrayType<UInt_t> > TClaArrayUIntProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are array of unsigned int
936 typedef TClaArrayProxy<TArrayType<ULong_t> > TClaArrayULongProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are array of unsigned long
937 typedef TClaArrayProxy<TArrayType<ULong64_t> > TClaArrayULong64Proxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are array of unsigned long long
938 typedef TClaArrayProxy<TArrayType<UShort_t> > TClaArrayUShortProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are array of unsigned short
939 typedef TClaArrayProxy<TArrayType<UChar_t> > TClaArrayUCharProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are array of unsigned char
940 typedef TClaArrayProxy<TArrayType<Int_t> > TClaArrayIntProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are array of int
941 typedef TClaArrayProxy<TArrayType<Long_t> > TClaArrayLongProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are array of long
942 typedef TClaArrayProxy<TArrayType<Long64_t> > TClaArrayLong64Proxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are array of long long
943 typedef TClaArrayProxy<TArrayType<UShort_t> > TClaArrayShortProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are array of short
944 typedef TClaArrayProxy<TArrayType<Char_t> > TClaArrayCharProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are array of char
945 typedef TClaArrayProxy<TArrayType<Bool_t> > TClaArrayBoolProxy; // Concrete Implementation of the branch proxy around the data members of object in TClonesArray which are array of bool
946 //specialized ! typedef TClaArrayProxy<TArrayType<Char_t> > TClaArrayCharProxy;
947
948 typedef TStlImpProxy<Double_t> TStlDoubleProxy; // Concrete Implementation of the branch proxy around an stl container of double
949 typedef TStlImpProxy<Double32_t> TStlDouble32Proxy; // Concrete Implementation of the branch proxy around an stl container of double32
950 typedef TStlImpProxy<Float_t> TStlFloatProxy; // Concrete Implementation of the branch proxy around an stl container of float
951 typedef TStlImpProxy<Float16_t> TStlFloat16Proxy; // Concrete Implementation of the branch proxy around an stl container of float16_t
952 typedef TStlImpProxy<UInt_t> TStlUIntProxy; // Concrete Implementation of the branch proxy around an stl container of unsigned int
953 typedef TStlImpProxy<ULong_t> TStlULongProxy; // Concrete Implementation of the branch proxy around an stl container of unsigned long
954 typedef TStlImpProxy<ULong64_t> TStlULong64Proxy; // Concrete Implementation of the branch proxy around an stl container of unsigned long long
955 typedef TStlImpProxy<UShort_t> TStlUShortProxy; // Concrete Implementation of the branch proxy around an stl container of unsigned short
956 typedef TStlImpProxy<UChar_t> TStlUCharProxy; // Concrete Implementation of the branch proxy around an stl container of unsigned char
957 typedef TStlImpProxy<Int_t> TStlIntProxy; // Concrete Implementation of the branch proxy around an stl container of int
958 typedef TStlImpProxy<Long_t> TStlLongProxy; // Concrete Implementation of the branch proxy around an stl container of long
959 typedef TStlImpProxy<Long64_t> TStlLong64Proxy; // Concrete Implementation of the branch proxy around an stl container of long long
960 typedef TStlImpProxy<Short_t> TStlShortProxy; // Concrete Implementation of the branch proxy around an stl container of short
961 typedef TStlImpProxy<Char_t> TStlCharProxy; // Concrete Implementation of the branch proxy around an stl container of char
962 typedef TStlImpProxy<Bool_t> TStlBoolProxy; // Concrete Implementation of the branch proxy around an stl container of bool
963
964 typedef TStlArrayProxy<TArrayType<Double_t> > TStlArrayDoubleProxy; // Concrete Implementation of the branch proxy around an stl container of double
965 typedef TStlArrayProxy<TArrayType<Double32_t> > TStlArrayDouble32Proxy; // Concrete Implementation of the branch proxy around an stl container of double32
966 typedef TStlArrayProxy<TArrayType<Float_t> > TStlArrayFloatProxy; // Concrete Implementation of the branch proxy around an stl container of float
967 typedef TStlArrayProxy<TArrayType<Float16_t> > TStlArrayFloat16Proxy; // Concrete Implementation of the branch proxy around an stl container of float16_t
968 typedef TStlArrayProxy<TArrayType<UInt_t> > TStlArrayUIntProxy; // Concrete Implementation of the branch proxy around an stl container of unsigned int
969 typedef TStlArrayProxy<TArrayType<ULong_t> > TStlArrayULongProxy; // Concrete Implementation of the branch proxy around an stl container of unsigned long
970 typedef TStlArrayProxy<TArrayType<ULong64_t> > TStlArrayULong64Proxy; // Concrete Implementation of the branch proxy around an stl contained of unsigned long long
971 typedef TStlArrayProxy<TArrayType<UShort_t> > TStlArrayUShortProxy; // Concrete Implementation of the branch proxy around an stl container of unsigned short
972 typedef TStlArrayProxy<TArrayType<UChar_t> > TStlArrayUCharProxy; // Concrete Implementation of the branch proxy around an stl container of unsigned char
973 typedef TStlArrayProxy<TArrayType<Int_t> > TStlArrayIntProxy; // Concrete Implementation of the branch proxy around an stl container of int
974 typedef TStlArrayProxy<TArrayType<Long_t> > TStlArrayLongProxy; // Concrete Implementation of the branch proxy around an stl container of long
975 typedef TStlArrayProxy<TArrayType<Long64_t> > TStlArrayLong64Proxy; // Concrete Implementation of the branch proxy around an stl container of long long
976 typedef TStlArrayProxy<TArrayType<UShort_t> > TStlArrayShortProxy; // Concrete Implementation of the branch proxy around an stl container of UShort_t
977 typedef TStlArrayProxy<TArrayType<Char_t> > TStlArrayCharProxy; // Concrete Implementation of the branch proxy around an stl container of char
978 typedef TStlArrayProxy<TArrayType<Bool_t> > TStlArrayBoolProxy; // Concrete Implementation of the branch proxy around an stl container of bool
979
980} // namespace Internal
981
982// Reasonably backward compatible.
984
985} // namespace ROOT
986
987#endif
988
#define R__unlikely(expr)
Definition RConfig.hxx:586
#define d(i)
Definition RSha256.hxx:102
int Int_t
Definition RtypesCore.h:45
constexpr Bool_t kFALSE
Definition RtypesCore.h:101
long long Long64_t
Definition RtypesCore.h:80
constexpr Bool_t kTRUE
Definition RtypesCore.h:100
#define R__ASSERT(e)
Definition TError.h:118
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
Definition TError.cxx:185
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 result
char name[80]
Definition TGX11.cxx:110
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
Definition TString.cxx:2467
Base class for all the proxy object.
Bool_t ReadNoParentNoBranchCountNoCollection()
TNotifyLink< TBranchProxy > fNotify
Internal::TBranchProxyDirector * fDirector
Bool_t ReadNoParentNoBranchCountCollectionPointer()
TVirtualCollectionProxy * fCollection
void * GetClaStart(UInt_t i=0)
Bool_t Setup()
Initialize/cache the necessary information.
Bool_t ReadNoParentBranchCountCollectionNoPointer()
void * GetStlStart(UInt_t i=0)
TBranchElement * fBranchCount
const char * GetBranchName() const
virtual void * GetStart(UInt_t=0)
virtual Int_t GetArrayLength()
Bool_t ReadNoParentBranchCountNoCollection()
void Reset()
Completely reset the object.
virtual void * GetAddressOfElement(UInt_t)
Return the address of the element number i.
TBranchProxy * GetProxy()
Bool_t ReadNoParentNoBranchCountCollectionNoPointer()
virtual void Print()
Display the content of the object.
TVirtualCollectionProxy * GetCollection()
Bool_t ReadNoParentBranchCountCollectionPointer()
TStreamerElement * fElement
virtual ~TBranchProxy()
Typical Destructor.
Concrete Implementation of the branch proxy around the data members which are array of char.
~TArrayCharProxy() override=default
void Print() override
Display the content of the object.
unsigned char At(UInt_t i)
unsigned char operator[](Int_t i)
void * GetAddressOfElement(UInt_t i) final
Return the address of the element number i.
Template for concrete implementation of proxy around array of T.
void Print() override
Display the content of the object.
~TArrayProxy() override=default
const array_t & At(UInt_t i)
void * GetAddressOfElement(UInt_t i) final
Return the address of the element number i.
const array_t & operator[](Int_t i)
Int_t GetEntries() override
Long64_t GetReadEntry() const
Return the current 'local' entry number; i.e.
String builder to be used in the constructors.
TBranchProxyHelper(const char *left, const char *right=nullptr)
Template of the Concrete Implementation of the branch proxy around an TClonesArray of array of T.
array_t * operator[](Int_t i)
~TClaArrayProxy() override=default
Template of the Concrete Implementation of the branch proxy around TClonesArray of T.
~TClaImpProxy() override=default
TClaImpProxy & operator=(T)=delete
const T & operator[](Int_t i)
Base class for the proxy around object in TClonesArray.
Int_t GetEntries() override
const TClonesArray * operator->()
const TClonesArray * GetPtr()
void * GetAddressOfElement(UInt_t i) final
Return the address of the element number i.
~TClaProxy() override=default
void Print() override
Display the content of the object.
Template of the proxy around objects.
void Print() override
Display the content of the object.
~TImpProxy() override=default
TImpProxy & operator=(T)=delete
Template of the Concrete Implementation of the branch proxy around an stl container of array of T.
~TStlArrayProxy() override=default
array_t * operator[](Int_t i)
Template of the Concrete Implementation of the branch proxy around an stl container of T.
TStlImpProxy & operator=(T)=delete
const T & operator[](Int_t i)
~TStlImpProxy() override=default
Base class for the proxy around STL containers.
~TStlProxy() override=default
void * GetAddressOfElement(UInt_t i) final
Return the address of the element number i.
const TVirtualCollectionProxy * operator->()
Int_t GetEntries() override
void Print() override
Display the content of the object.
TVirtualCollectionProxy * GetPtr()
Base class of TTreeReaderValue.
A Branch for the case of an object.
Int_t GetEntry(Long64_t entry=0, Int_t getall=0) override
Read all branches of a BranchElement and return total number of bytes.
Int_t GetNdata() const
A TTree is a list of TBranches.
Definition TBranch.h:93
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Read all leaves of entry and return total number of bytes read.
Definition TBranch.cxx:1706
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition TClass.h:81
An array of clone (identical) objects.
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
Definition TLeaf.h:57
virtual void * GetValuePointer() const
Definition TLeaf.h:138
TBranch * GetBranch() const
Definition TLeaf.h:116
Int_t GetEntries() const override
Return the number of objects in array (i.e.
TObject * At(Int_t idx) const override
Definition TObjArray.h:164
Int_t GetLast() const override
Return index of last object in array.
Basic string class.
Definition TString.h:139
Ssiz_t Length() const
Definition TString.h:421
const char * Data() const
Definition TString.h:380
Defines a common interface to inspect/change the contents of an object that represents a collection.
virtual void PushProxy(void *objectstart)=0
Set the address of the container being proxied and keep track of the previous one.
virtual void PopProxy()=0
Reset the address of the container being proxied to the previous container.
virtual void * At(UInt_t idx)=0
Return the address of the value at index idx
virtual UInt_t Size() const =0
Return the current number of elements in the container.
TImpProxy< Long_t > TLongProxy
TClaArrayProxy< TArrayType< ULong64_t > > TClaArrayULong64Proxy
TClaArrayProxy< TArrayType< Long64_t > > TClaArrayLong64Proxy
TClaArrayProxy< TArrayType< UChar_t > > TClaArrayUCharProxy
TStlImpProxy< UInt_t > TStlUIntProxy
TStlArrayProxy< TArrayType< Long64_t > > TStlArrayLong64Proxy
TClaArrayProxy< TArrayType< UShort_t > > TClaArrayShortProxy
TClaArrayProxy< TArrayType< Double32_t > > TClaArrayDouble32Proxy
TArrayProxy< TArrayType< Int_t > > TArrayIntProxy
TArrayProxy< TArrayType< UShort_t > > TArrayUShortProxy
TStlArrayProxy< TArrayType< ULong_t > > TStlArrayULongProxy
TStlImpProxy< ULong64_t > TStlULong64Proxy
TArrayProxy< TArrayType< Bool_t > > TArrayBoolProxy
TClaArrayProxy< TArrayType< Char_t > > TClaArrayCharProxy
TStlImpProxy< Double_t > TStlDoubleProxy
TStlArrayProxy< TArrayType< Int_t > > TStlArrayIntProxy
TStlArrayProxy< TArrayType< Float_t > > TStlArrayFloatProxy
TStlArrayProxy< TArrayType< Char_t > > TStlArrayCharProxy
TImpProxy< UShort_t > TUShortProxy
TStlArrayProxy< TArrayType< UShort_t > > TStlArrayShortProxy
TStlImpProxy< UChar_t > TStlUCharProxy
TClaImpProxy< Long_t > TClaLongProxy
TImpProxy< Double_t > TDoubleProxy
TImpProxy< ULong_t > TULongProxy
TStlArrayProxy< TArrayType< UChar_t > > TStlArrayUCharProxy
TArrayProxy< TArrayType< UChar_t > > TArrayUCharProxy
TClaImpProxy< Char_t > TClaCharProxy
TStlImpProxy< Char_t > TStlCharProxy
TClaImpProxy< Int_t > TClaIntProxy
TImpProxy< Long64_t > TLong64Proxy
TClaImpProxy< Bool_t > TClaBoolProxy
TStlImpProxy< Float16_t > TStlFloat16Proxy
TClaArrayProxy< TArrayType< Long_t > > TClaArrayLongProxy
TStlImpProxy< Float_t > TStlFloatProxy
TStlArrayProxy< TArrayType< Float16_t > > TStlArrayFloat16Proxy
TStlImpProxy< Long_t > TStlLongProxy
TArrayProxy< TArrayType< UInt_t > > TArrayUIntProxy
TImpProxy< UChar_t > TUCharProxy
TClaArrayProxy< TArrayType< Float_t > > TClaArrayFloatProxy
TImpProxy< Char_t > TCharProxy
TArrayProxy< TArrayType< UShort_t > > TArrayShortProxy
TClaArrayProxy< TArrayType< Int_t > > TClaArrayIntProxy
TImpProxy< ULong64_t > TULong64Proxy
TArrayProxy< TArrayType< Double_t > > TArrayDoubleProxy
TClaImpProxy< Long64_t > TClaLong64Proxy
TArrayProxy< TArrayType< ULong64_t > > TArrayULong64Proxy
TImpProxy< Int_t > TIntProxy
TClaArrayProxy< TArrayType< UInt_t > > TClaArrayUIntProxy
TClaImpProxy< Short_t > TClaShortProxy
TClaArrayProxy< TArrayType< UShort_t > > TClaArrayUShortProxy
TStlImpProxy< Bool_t > TStlBoolProxy
TArrayProxy< TArrayType< Float_t > > TArrayFloatProxy
TImpProxy< Float16_t > TFloat16Proxy
TStlArrayProxy< TArrayType< UInt_t > > TStlArrayUIntProxy
TStlArrayProxy< TArrayType< Bool_t > > TStlArrayBoolProxy
TClaImpProxy< Double32_t > TClaDouble32Proxy
TStlArrayProxy< TArrayType< Double32_t > > TStlArrayDouble32Proxy
TClaImpProxy< UInt_t > TClaUIntProxy
TArrayProxy< TArrayType< ULong_t > > TArrayULongProxy
TStlImpProxy< Int_t > TStlIntProxy
TClaImpProxy< Double_t > TClaDoubleProxy
TClaImpProxy< ULong_t > TClaULongProxy
TArrayProxy< TArrayType< Long64_t > > TArrayLong64Proxy
TClaImpProxy< ULong64_t > TClaULong64Proxy
TImpProxy< Double32_t > TDouble32Proxy
TClaArrayProxy< TArrayType< ULong_t > > TClaArrayULongProxy
TImpProxy< UInt_t > TUIntProxy
TClaImpProxy< UChar_t > TClaUCharProxy
TClaImpProxy< Float_t > TClaFloatProxy
TImpProxy< Float_t > TFloatProxy
TClaImpProxy< UShort_t > TClaUShortProxy
TArrayProxy< TArrayType< Float16_t > > TArrayFloat16Proxy
TImpProxy< Short_t > TShortProxy
TArrayProxy< TArrayType< Long_t > > TArrayLongProxy
TStlImpProxy< Double32_t > TStlDouble32Proxy
TStlArrayProxy< TArrayType< UShort_t > > TStlArrayUShortProxy
TClaArrayProxy< TArrayType< Double_t > > TClaArrayDoubleProxy
TStlArrayProxy< TArrayType< ULong64_t > > TStlArrayULong64Proxy
TStlArrayProxy< TArrayType< Long_t > > TStlArrayLongProxy
TStlImpProxy< UShort_t > TStlUShortProxy
TClaImpProxy< Float16_t > TClaFloat16Proxy
TClaArrayProxy< TArrayType< Bool_t > > TClaArrayBoolProxy
TStlImpProxy< Long64_t > TStlLong64Proxy
TStlImpProxy< Short_t > TStlShortProxy
TImpProxy< Bool_t > TBoolProxy
TClaArrayProxy< TArrayType< Float16_t > > TClaArrayFloat16Proxy
TStlImpProxy< ULong_t > TStlULongProxy
TStlArrayProxy< TArrayType< Double_t > > TStlArrayDoubleProxy
TArrayProxy< TArrayType< Double32_t > > TArrayDouble32Proxy
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.
Helper template to be able to determine and use array dimensions.
static constexpr int gSize
Helper class for proxy around multi dimension array.