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