Hello Everybodys, I have a problem with the analysis software in CMS: I'm writing some events variable in a rootpla and to do this I wrote a new class called MyRootTree. This is a semplified version of this class: class MyRootTree : public TObject { public: MyRootTree(int k1); ~MyRootTree(); void FillMyRootupla(int ia, vector<RawJet>&); private: ... }; As you can see the creator of the class has a parameter which is used to create k1 different tree. This creator is something like this: MyRootTree::MyRootTree(int k1){ for (int i=0;i<k1;i++) { t[i] = new TTree(Form("t%d",i),Form("MC-Rec Jets %d",i)); t[i]->Branch("irun",&irun,"irun/I"); ...} } The main analysis is done using a class with a constructor, a UserAnaysis called for each event and a destructor. What I'm doing now is create in the analysis constructor an object for MyRootTree: int NumTree=5 theRootupla = new MyRootTree(NumTree) Then I'm using the method FillMyRootupla to fill all the branches for each tree for each event I'm processing... Finally in the destructor of the Main Anlysis class I call the destrucor of the object theRootupla delete theRootupla; And the destructor of the class MyRootTree is something like this: MyRootTree::~MyRootTree() { int k1 = 5; TFile file1; file1.Open(...); for (int i=0;i<k1;i++) { t[i][j][k]->Write(); } file1.Close(); } My problem is how to tell to the destructor how many trees have to be written in the file... the actual situation is that each time I manually define k1= the exact number of the tree created before but I really would like to have an automatic way to pass to the destructor the correct parameter numTree defined above... but it's not possible to pass parameters do destracutors... am I right? Do you have any suggestion on how to do it or a more elegant way to build the class to store the output of the analysis? Thank you very much. Attilio
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:16 MET