Hi everyone,
I found out a very strange problem with my program.
I created this simple class:
/***************************************************************************
TC_BeamTDCData.h - description
-------------------
begin : Sat Mar 29 2003
copyright : (C) 2003 by Paolo ADRAGNA
email : paolo.adragna@pi.infn.it
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef TC_BEAMTDCDATA_H
#define TC_BEAMTDCDATA_H
#include <algorithm>
#include <iostream>
#include <vector>
#include <TObject.h>
#include "TC_Calibration.h"
class TC_BeamTDCData : public TObject
{
private:
Float_t Xcha1;
Float_t Ycha1;
Float_t Xcha2;
Float_t Ycha2;
Float_t Ximp;
Float_t Yimp;
std::vector<int> tdc1;
std::vector<int> tdc2;
const TC_Calibration beam;
public:
TC_BeamTDCData(void);
virtual ~TC_BeamTDCData(void);
void Reset();
void Decode(int size, unsigned long *data);
void Print();
Float_t GetXcha1();
Float_t GetYcha1();
Float_t GetXcha2();
Float_t GetYcha2();
ClassDef(TC_BeamTDCData,1)
};
#endif
Then I create a TTree and a TBranch with
tree->Branch("BeamTDC", "TC_BeamTDCData", &fBeamTDCData, 32000, 3);
where we have TC_BeamTDCData* fBeamTDCData.
When I fill the tree (with a loop, one entry for every event) I am sure that
fBeamTDCData is not empty: all the data members have the right expected value
(I checked with a Print() method).
But if I try
tree->Scan("Xcha1:Ycha1:Xcha2:Ycha2:Ximp:Yimp","","", 6, 0)
for example, I find that only Ximp and Yimp have the correct values. As far as
the other variable, only the first entry is correct; from the second on all
the values seems to b meaningless, surely different from the printed ones,
and frequently also equal among them. Here an example:
************************************************************************************
* Row * Xcha1 * Ycha1 * Xcha2 * Ycha2 * Ximp * Yimp *
************************************************************************************
* 0 * -0.938000 * -1.289999 * -0.936900 * -1.289999 * -0.936623 *-1.289999
* 1 * 6.5722312 * 6.5722312 * 6.5722312 * 6.5722312 * 3.0130693 * 2.3270983
* 2 * 6.5722312 * 6.5722312 * 6.5722312 * 6.5722312 * 2.486444 * 2.2331476 *
* 3 * 6.5722312 * 6.5722312 * 6.5722312 * 6.5722312 * 1.6526198 * 1.5285182 *
* 4 * 6.5722312 * 6.5722312 * 6.5722312 * 6.5722312 * 1.9159326 * 3.6893818 *
************************************************************************************
Any idea on this strange behaviour? I use the Version 3.05/04 21 April 2003
on gcc 2.95.2
Ciao,
Paolo Adragna
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:12 MET