Inspect custom classes, TClass::BuildRealData

From: Norbert Danneberg (norbert.danneberg@psi.ch)
Date: Fri Mar 01 1940 - 01:39:46 MET


Hi ,

we use a custom class wich is a extended version of the TTree::MakeClass
output as a basic analysis class.
In this class the BranchAddresses are set and the leafs declared. In a
custom analysis class, derived from
this basic class one has only to set the BranchStatus of the desired
branches and implement the ::Evaluate
function.

Somehow the TObject::Inspect Function produces a segmentation vioaltion
in CINT. I traced down the
problem to the TClass::BuildRealData Function which seams to have
problems with some of the leaves in
MTAnalysis. I do not have an clue why. Only the variables indicated
below (STREAMED) are persistent.
But even if I do not stream any of those variables the TObject::Inspect
does not work, although it should
print at least the persistent variables of TNamed.

Besides this "Inspect" problem the class works as expected.

Any help is welcome

Norbert


class MTAnalysis: public TNamed{
public:
  TList* Histograms;   // List of Histograms in this class   STREAMED
  TTree* Events;      //! Pointer to the analyzed Tree
  MTDetector* MuPTDetector; //!
  Float_t FoilZ;// STREAMED
  Float_t BgoWallZ;// STREAMED
  Int_t ActEventNumber; //! Actual EventNumber;

  //Declaration of leaves types
  Int_t           EventNumber;//!
  UShort_t        TypeOfEvent;//!
  Float_t         TotalEnergy;//!
  Float_t         CenterEnergyX;//!
  Float_t         CenterEnergyY;//!
  Float_t         PhiWall34;//!
  Float_t         AlphaWall134;//!

..

public:
  MTAnalysis();
  MTAnalysis(Text_t* Name, Text_t* Title, TTree* Events);
  ~MTAnalysis();
  virtual void Init(){;}
  virtual void SetBranchAddresses();
  virtual void EnableBranches();
  Int_t GetEvent(Int_t event);
  void SetBgoWallZPos(Float_t z) {BgoWallZ = z;}
  virtual void CreateHistos();
  void CreateHistoList();
  virtual void StartAnalysis();
  virtual void Analysis(Int_t nentries);
  virtual Bool_t Evaluate(){return TRUE;}
  virtual Int_t Loop(Int_t nentries);
  virtual void FillHistos(){;}
  virtual void EndAnalysis();
  //virtual void Draw();
  virtual void Browse(TBrowser *b);
  virtual TList* GetHistograms(){return Histograms;}
  virtual TTree* GetTree(){return Events;}
  virtual void Show(Int_t event);
  ClassDef(MTAnalysis,1) //Base class for other analysis classes
};


Default Constructor:

MTAnalysis::MTAnalysis(){
  Events=NULL;
  Histograms=NULL;
  MuPTDetector=gExperiment->GetDetector();
  FoilZ = gExperiment->GetDetector()->GetFoilZPos();
  BgoWallZ = gExperiment->GetDetector()->GetBgoWallZPos();
  ActEventNumber =0;
  this->SetName("MTAnalysis");
  this->SetTitle("MTAnalysis");
}

--

Norbert Danneberg

ETH Zurich - Institute for Particle Physics
  Laboratory for Nuclear Physics          Phone.: +41-1-633-2034
  Hoenggerberg                            Fax.:   +41-1-633-1067
  CH-8093 Zurich


ETH Zurich - Institute for Particle Physics
  Paul Scherrer Institute                 Phone.: +41-56-310-3284
  CH-5232 Villigen PSI                    Fax.:   +41-56-310-4362

email: Norbert.Danneberg@psi.ch



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:36 MET