Hi,
I've attached files.
The problem is to stream out the type of map<pair<int, int>,SomeObject>.
I did the following in root session :
.L RtgObject.cc+
TestRtgObject();
then got segmentaion fault.
The files I attached contains class definition and making a simple tree
and read that tree.
Could you look into this?
I'm using root 3.10.01 with gcc 3.2.2 on redhat linux 9.0.
Thank you.
Dongwook Jang.
//--------------------------------------------------------------------------
// File and Version Information:
// $Id: RtgObject.hh,v 1.2 2003/10/29 22:19:44 dwjang Exp $
//
// Description:
// Class RtgObject for Ntuplizer
//------------------------------------------------------------------------
#ifndef RTGOBJECT_HH
#define RTGOBJECT_HH
#include <TObject.h>
#include <TVector3.h>
#include <TLorentzVector.h>
#include <TString.h>
#include <iostream>
#include <vector>
#include <map>
using namespace std;
#define NMET 3
class RtgEvent;
class RtgMet;
class RtgTrack;
class RtgTower;
class RtgPhoton;
class RtgElectron;
class RtgMuon;
class RtgTau;
class RtgPi0;
class RtgCesMatch;
class RtgJet;
class RtgBoson;
typedef pair<int, int> RtgTowerKey;
class RtgEvent : public TObject {
public:
int runNumber;
int eventNumber;
int mcFlag;
int primaryVertexFound;
TVector3 beamSpot;
TVector3 primaryVertex;
TVector3 primaryVertexError;
// L3 bits
int l3_JET_20_v;
int l3_JET_50_v;
int l3_JET_70_v;
int l3_JET_100_v;
int l3_DITAU_v;
int l3_TAU_CMUP8_TRACK5_ISO_v;
int l3_TAU_CMX8_TRACK5_ISO_v;
int l3_TAU_ELECTRON8_TRACK5_ISO_v;
int l3_TAU_MET_v;
int l3_ELECTRON_CENTRAL_8_NO_L2_v;
int l3_ELECTRON_CENTRAL_8_v;
int l3_ELECTRON_CENTRAL_PS1K_L1_CEM8_PT8_v;
int l3_MUON_CMUP8_v;
int l3_MET_L3PS100_L1_MET25_v;
int l3_TEST_DITAU_v;
int l3_PHOTON_15_TIGHT_v;
int l3_PHOTON_25_ISO_TRACK_5_ISO_v;
int l3_PHOTON_25_ISO_v;
int l3_PHOTON_B_JET_v;
int l3_SUPER_PHOTON70_L2_EM_v;
int l3_SUPER_PHOTON70_L2_JET_v;
int l3_ULTRA_PHOTON50_v;
int l3Word;
int cosmicWord;
// Met index 0 : trigger raw MET
// Met index 1 : offline raw MET
// Met index 2 : offline vertex corrected MET
RtgMet* rtgMet[NMET];
map<int, RtgTrack> trackList;
map<RtgTowerKey, RtgTower> towerList;
map<int, RtgPhoton> photonList;
map<int, RtgElectron> electronList;
map<int, RtgMuon> muonList;
map<int, RtgTau> tauList;
map<int, RtgCesMatch> cesMatchList;
map<int, RtgPi0> pi0List;
map<int, RtgJet> jetList; // cone0.7
map<int, RtgJet> jet4List; // cone0.4
RtgBoson* rtgBoson;
RtgEvent();
~RtgEvent();
void Init();
virtual void Clear(const Option_t *option="");
virtual void Print(Option_t *option="") const;
ClassDef(RtgEvent,1);
};
class RtgMet : public TObject {
public:
float exSum;
float eySum;
float etSum;
float eSum;
RtgMet();
~RtgMet();
void Init();
virtual void Clear(const Option_t *option="");
virtual void Print(const Option_t *option="") const;
ClassDef(RtgMet,1);
};
//---------------
// tracks
//---------------
class RtgTrack : public TObject {
public:
int nSegAx;
int nSegSt;
int usedSI;
TVector3 momentum;
float curvature;
float lambda;
float z0;
float phi0;
float d0;
float d0Sig;
// extrapolated to calorimeter
int iEta;
int iPhi;
float iEtaRel;
float iPhiRel;
float cesStripE;
float cesStripChi2;
float cesStripDelZ;
float cesWireE;
float cesWireChi2;
float cesWireDelX;
RtgTrack();
~RtgTrack();
void Init();
virtual void Clear(const Option_t *option="");
virtual void Print(const Option_t *option="") const;
ClassDef(RtgTrack,1);
};
class RtgTower : public TObject {
public:
RtgTowerKey key; // (iEta, iPhi)
float eta; // totEta
float phi; // totPhi
float emE;
float emEta;
float emPhi;
float hadE;
float hadEta;
float hadPhi;
RtgTower();
~RtgTower();
void Init();
virtual void Clear(const Option_t *option="");
virtual void Print(const Option_t *option="") const;
ClassDef(RtgTower,1);
};
class RtgPhoton : public TObject {
public:
int trackIndex;
int n3D;
float etCorr;
float eCorr;
float hadEm;
float cesChi2Mean;
float trackPt;
float isoEtCorr;
float trackIso;
float cesX;
float cesZ;
float cesE2;
float cesEt2;
float detEta;
float detPhi;
TLorentzVector momentum;
vector<RtgTowerKey> towerList;
RtgPhoton();
~RtgPhoton();
void Init();
virtual void Clear(const Option_t *option="");
virtual void Print(const Option_t *option="") const;
ClassDef(RtgPhoton,1);
};
class RtgElectron : public TObject {
public:
int trackIndex;
int fiducial;
float et;
float pt;
float lshr;
float eOverP;
float hadEm;
float calIsoEt;
float qDeltaX;
float deltaZ;
float cesStripChi2;
float cesWireChi2;
float detEta;
float detPhi;
float d0Corrected;
TLorentzVector momentum;
vector<RtgTowerKey> towerList;
RtgElectron();
~RtgElectron();
void Init();
virtual void Clear(const Option_t *option="");
virtual void Print(const Option_t *option="") const;
ClassDef(RtgElectron,1);
};
class RtgMuon : public TObject {
public:
int type;
int hasNoStubs;
int bestTrackIndex;
int secondBestTrackIndex;
float emEnergy;
float hadEnergy;
float emEt;
float hadEt;
float coneR4EmEt;
float coneR4HadEt;
float cmuDx;
float cmpDx;
float cmxDx;
float bmuDx;
float d0Corrected;
TLorentzVector momentum;
vector<RtgTowerKey> towerList;
RtgMuon();
~RtgMuon();
void Init();
virtual void Clear(const Option_t *option="");
virtual void Print(const Option_t *option="") const;
ClassDef(RtgMuon,1);
};
class RtgTau : public TObject {
public:
int seedTrackIndex;
int nTowers;
int towerMatchedJetIndex;
int towerMatchedJet4Index;
float referenceVertexZ;
float clusterDetEta;
float emfraction;
float clusterEt;
float isoCalEt; // wrt tau vertex
float isoEmEt; // wrt tau vertex
float isoCalEtDefault;
float isoEmEtDefault;
float isoMaxTowerEt;
int isoNTowers;
float d0Corrected;
int nMuonStubs;
int nMuonHits;
// Tau signal cone quantities
int nTracks;
int nPi0s;
int charge;
int triggerIsoFlag; // == 1 for satisfing trigger isolation (no tracks pt > 1.5GeV in 0.175 < dR < 0.524)
float seedTrackZCes;
// Tau isolation quantities
int isoNTracks;
int isoNTracks1030;
int isoNPi0s;
float isoPi0sEt;
float isoScalarSumPt;
float isoAlphaMinTrack;
float isoAlphaMinPi0;
float isoAlphaMinTrack2;
float isoAlphaMinPi02;
TLorentzVector clusterMomentum;
vector<RtgTowerKey> towerList;
RtgTau();
~RtgTau();
void Init();
virtual void Clear(const Option_t *option="");
virtual void Print(const Option_t *option="") const;
ClassDef(RtgTau,1);
};
class RtgPi0 : public TObject {
public:
float phi;
float eta;
float e;
RtgPi0();
~RtgPi0();
void Init();
virtual void Clear(const Option_t *option="");
virtual void Print(const Option_t *option="") const;
ClassDef(RtgPi0,1);
};
class RtgCesMatch : public TObject {
public:
int type;
int iEta;
int iPhi;
int iEtaRel;
int iPhiRel;
float e;
float phi;
float z;
float xLocal;
float zLocal;
int side;
int wedge;
int halfWedge;
int pi0Index;
RtgCesMatch();
~RtgCesMatch();
void Init();
virtual void Clear(const Option_t *option="");
virtual void Print(const Option_t *option="") const;
ClassDef(RtgCesMatch,1);
};
class RtgJet : public TObject {
public:
float vertexZ;
int nTowers;
int nTracks;
float etaDetector;
float emFraction;
float chargeFraction;
float et;
float etaEta;
float etaPhi;
float phiPhi;
float width;
int triggered20[3]; // 0:L1, 1:L2, 2:L3
int triggered50[3];
int triggered70[3];
int triggered100[3];
TLorentzVector momentum;
vector<RtgTowerKey> towerList;
RtgJet();
~RtgJet();
void Init();
virtual void Clear(const Option_t *option="");
virtual void Print(const Option_t *option="") const;
ClassDef(RtgJet,1);
};
class RtgBoson : public TObject {
public:
TLorentzVector boson;
TLorentzVector tau[2];
TLorentzVector radiation;
TVector3 tauVertex[2];
TLorentzVector tauNu[2];
TLorentzVector tauVisibles[2];
TLorentzVector tauTracks[2];
TLorentzVector tauSeedTrack[2];
TLorentzVector tauPi0s[2];
int bosonID;
int tauSeedTrackID[2];
int tauCharge[2];
int tauNVisibles[2];
int tauNTracks[2];
int tauSeedTrackCharge[2];
int tauNPi0s[2];
float tauMaxAlphaNu[2];
float tauMaxAlphaTrack[2];
float tauMaxAlphaPi0[2];
float tauMaxAlphaVisibles[2];
float tauSeedTrackZ0[2];
RtgBoson();
~RtgBoson();
void Init();
virtual void Clear(const Option_t *option="");
virtual void Print(const Option_t *option="") const;
ClassDef(RtgBoson,1);
};
#endif
//--------------------------------------------------------------------------
// File and Version Information:
// $Id: RtgObject.cc,v 1.2 2003/10/29 22:19:44 dwjang Exp $
//
// Description:
// Class RtgObject for Ntuplizer
//------------------------------------------------------------------------
#include "RtgObject.hh"
#include <string>
#include <TRandom.h>
#include <TFile.h>
#include <TTree.h>
ClassImp(RtgEvent)
ClassImp(RtgMet)
ClassImp(RtgTrack)
ClassImp(RtgTower)
ClassImp(RtgPhoton)
ClassImp(RtgElectron)
ClassImp(RtgMuon)
ClassImp(RtgTau)
ClassImp(RtgCesMatch)
ClassImp(RtgPi0)
ClassImp(RtgJet)
void PrintVector(const TLorentzVector &p);
void PrintVector(const TVector3 &p);
void TestRtgObject();
void makeRtgTree();
void readRtgTree();
RtgEvent::RtgEvent() {
Init();
}
RtgEvent::~RtgEvent(){}
void RtgEvent::Init(){
runNumber = -1;
eventNumber = -1;
mcFlag = -1;
primaryVertexFound = 0;
beamSpot.SetXYZ(0,0,0);
primaryVertex.SetXYZ(0,0,0);
primaryVertexError.SetXYZ(0,0,0);
// L3 bits
l3_JET_20_v = 0;
l3_JET_50_v = 0;
l3_JET_70_v = 0;
l3_JET_100_v = 0;
l3_DITAU_v = 0;
l3_TAU_CMUP8_TRACK5_ISO_v = 0;
l3_TAU_CMX8_TRACK5_ISO_v = 0;
l3_TAU_ELECTRON8_TRACK5_ISO_v = 0;
l3_TAU_MET_v = 0;
l3_ELECTRON_CENTRAL_8_NO_L2_v = 0;
l3_ELECTRON_CENTRAL_8_v = 0;
l3_ELECTRON_CENTRAL_PS1K_L1_CEM8_PT8_v = 0;
l3_MUON_CMUP8_v = 0;
l3_MET_L3PS100_L1_MET25_v = 0;
l3_TEST_DITAU_v = 0;
l3_PHOTON_15_TIGHT_v = 0;
l3_PHOTON_25_ISO_TRACK_5_ISO_v = 0;
l3_PHOTON_25_ISO_v = 0;
l3_PHOTON_B_JET_v = 0;
l3_SUPER_PHOTON70_L2_EM_v = 0;
l3_SUPER_PHOTON70_L2_JET_v = 0;
l3_ULTRA_PHOTON50_v = 0;
l3Word = 0;
cosmicWord = 0;
for(int i=0; i<NMET; i++){
rtgMet[i] = new RtgMet();
}
rtgBoson = 0; // Null pointer for now
}
void RtgEvent::Clear(const Option_t *option){
trackList.clear();
towerList.clear();
photonList.clear();
electronList.clear();
muonList.clear();
tauList.clear();
pi0List.clear();
cesMatchList.clear();
jetList.clear();
if(rtgBoson) rtgBoson->Clear();
}
void RtgEvent::Print(const Option_t *option) const {
cout << "runNumber : " << runNumber << endl;
cout << "eventNumber : " << eventNumber << endl;
cout << "mcFlag : " << mcFlag << endl;
cout << "beamSpot = "; PrintVector(beamSpot);
cout << "primaryVertexFound : " << primaryVertexFound << endl;
cout << "primaryVertex = "; PrintVector(primaryVertex);
cout << "primaryVertexError = "; PrintVector(primaryVertexError);
cout << "l3_JET_20_v : " << l3_JET_20_v << endl;
cout << "l3_JET_50_v : " << l3_JET_50_v << endl;
cout << "l3_JET_70_v : " << l3_JET_70_v << endl;
cout << "l3_JET_100_v : " << l3_JET_100_v << endl;
cout << "l3_DITAU_v : " << l3_DITAU_v << endl;
cout << "l3_TAU_CMUP8_TRACK5_ISO_v : " << l3_TAU_CMUP8_TRACK5_ISO_v << endl;
cout << "l3_TAU_CMX8_TRACK5_ISO_v : " << l3_TAU_CMX8_TRACK5_ISO_v << endl;
cout << "l3_TAU_ELECTRON8_TRACK5_ISO_v : " << l3_TAU_ELECTRON8_TRACK5_ISO_v << endl;
cout << "l3_TAU_MET_v : " << l3_TAU_MET_v << endl;
cout << "l3_ELECTRON_CENTRAL_8_NO_L2_v : " << l3_ELECTRON_CENTRAL_8_NO_L2_v << endl;
cout << "l3_ELECTRON_CENTRAL_8_v : " << l3_ELECTRON_CENTRAL_8_v << endl;
cout << "l3_ELECTRON_CENTRAL_PS1K_L1_CEM8_PT8_v : " << l3_ELECTRON_CENTRAL_PS1K_L1_CEM8_PT8_v << endl;
cout << "l3_MUON_CMUP8_v : " << l3_MUON_CMUP8_v << endl;
cout << "l3_MET_L3PS100_L1_MET25_v : " << l3_MET_L3PS100_L1_MET25_v << endl;
cout << "l3_TEST_DITAU_v : " << l3_TEST_DITAU_v << endl;
cout << "l3_PHOTON_15_TIGHT_v : " << l3_PHOTON_15_TIGHT_v << endl;
cout << "l3_PHOTON_25_ISO_TRACK_5_ISO_v : " << l3_PHOTON_25_ISO_TRACK_5_ISO_v << endl;
cout << "l3_PHOTON_25_ISO_v : " << l3_PHOTON_25_ISO_v << endl;
cout << "l3_PHOTON_B_JET_v : " << l3_PHOTON_B_JET_v << endl;
cout << "l3_SUPER_PHOTON70_L2_EM_v : " << l3_SUPER_PHOTON70_L2_EM_v << endl;
cout << "l3_SUPER_PHOTON70_L2_JET_v : " << l3_SUPER_PHOTON70_L2_JET_v << endl;
cout << "l3_ULTRA_PHOTON50_v : " << l3_ULTRA_PHOTON50_v << endl;
cout << "l3Word : " << l3Word << endl;
cout << "cosmicWord : " << cosmicWord << endl;
for(int i=0; i<NMET; i++){
cout << "rtgMet["<<i<<"] -------------" << endl;
rtgMet[i]->Print();
}
cout << "trackList.size() : " << trackList.size() << endl;
cout << "towerList.size() : " << towerList.size() << endl;
cout << "photonList.size() : " << photonList.size() << endl;
cout << "electronList.size() : " << electronList.size() << endl;
cout << "muonList.size() : " << muonList.size() << endl;
cout << "tauList.size() : " << tauList.size() << endl;
cout << "cesMatchList.size() : " << cesMatchList.size() << endl;
cout << "pi0List.size() : " << pi0List.size() << endl;
cout << "jetList.size() : " << jetList.size() << endl;
for(map<int, RtgTrack>::const_iterator iter = trackList.begin();
iter != trackList.end(); iter++){
cout << "trackList key(index of map) : " << iter->first << endl;
iter->second.Print();
}
for(map<RtgTowerKey, RtgTower>::const_iterator iter = towerList.begin();
iter != towerList.end(); iter++){
cout << "towerList key(index of map) : (" << iter->first.first << "," << iter->first.second << ")" << endl;
iter->second.Print();
}
for(map<int, RtgPhoton>::const_iterator iter = photonList.begin();
iter != photonList.end(); iter++){
cout << "photonList key(index of map) : " << iter->first << endl;
iter->second.Print();
}
for(map<int, RtgElectron>::const_iterator iter = electronList.begin();
iter != electronList.end(); iter++){
cout << "electronList key(index of map) : " << iter->first << endl;
iter->second.Print();
}
for(map<int, RtgMuon>::const_iterator iter = muonList.begin();
iter != muonList.end(); iter++){
cout << "muonList key(index of map) : " << iter->first << endl;
iter->second.Print();
}
for(map<int, RtgTau>::const_iterator iter = tauList.begin();
iter != tauList.end(); iter++){
cout << "tauList key(index of map) : " << iter->first << endl;
iter->second.Print();
}
for(map<int, RtgCesMatch>::const_iterator iter = cesMatchList.begin();
iter != cesMatchList.end(); iter++){
cout << "cesMatchList key(index of map) : " << iter->first << endl;
iter->second.Print();
}
for(map<int, RtgPi0>::const_iterator iter = pi0List.begin();
iter != pi0List.end(); iter++){
cout << "pi0List key(index of map) : " << iter->first << endl;
iter->second.Print();
}
for(map<int, RtgJet>::const_iterator iter = jetList.begin();
iter != jetList.end(); iter++){
cout << "jetList key(index of map) : " << iter->first << endl;
iter->second.Print();
}
if(rtgBoson) rtgBoson->Print();
}
RtgMet::RtgMet(){
Init();
}
RtgMet::~RtgMet(){}
void RtgMet::Init(){
exSum = 0;
eySum = 0;
etSum = 0;
eSum = 0;
}
void RtgMet::Clear(const Option_t *option){}
void RtgMet::Print(const Option_t *option) const{
cout << "exSum : " << exSum << endl;
cout << "eySum : " << eySum << endl;
cout << "etSum : " << etSum << endl;
cout << "eSum : " << eSum << endl;
}
RtgTrack::RtgTrack(){
Init();
}
RtgTrack::~RtgTrack(){}
void RtgTrack::Init(){
nSegAx = 0;
nSegSt = 0;
usedSI = 0;
momentum.SetXYZ(0,0,0);
curvature = 0;
lambda = 0;
z0 = 0;
phi0 = 0;
d0 = 0;
d0Sig = 0;
// extrapolated to calorimeter
iEta = 0;
iPhi = 0;
iEtaRel = 0;
iPhiRel = 0;
cesStripE = 0;
cesStripChi2 = 0;
cesStripDelZ = 0;
cesWireE = 0;
cesWireChi2 = 0;
cesWireDelX = 0;
}
void RtgTrack::Clear(const Option_t *option){}
void RtgTrack::Print(const Option_t *option) const{
cout << "nSegAx : " << nSegAx << endl;
cout << "nSegSt : " << nSegSt << endl;
cout << "usedSI : " << usedSI << endl;
cout << "momentum = "; PrintVector(momentum);
cout << "curvature : " << curvature << endl;
cout << "lambda : " << lambda << endl;
cout << "z0 : " << z0 << endl;
cout << "phi0 : " << phi0 << endl;
cout << "d0 : " << d0 << endl;
cout << "d0Sig : " << d0Sig << endl;
cout << "iEta : " << iEta << endl;
cout << "iPhi : " << iPhi << endl;
cout << "iEtaRel : " << iEtaRel << endl;
cout << "iPhiRel : " << iPhiRel << endl;
cout << "cesStripE : " << cesStripE << endl;
cout << "cesStripChi2 : " << cesStripChi2 << endl;
cout << "cesStripDelZ : " << cesStripDelZ << endl;
cout << "cesWireE : " << cesWireE << endl;
cout << "cesWireChi2 : " << cesWireChi2 << endl;
cout << "cesWireDelX : " << cesWireDelX << endl;
}
RtgTower::RtgTower(){
Init();
}
RtgTower::~RtgTower(){}
void RtgTower::Init(){
key = make_pair(-1,-1);
eta = 0;
phi = 0;
emE = 0;
hadE = 0;
}
void RtgTower::Clear(const Option_t *option){}
void RtgTower::Print(const Option_t *option) const{
cout << "key : (" << key.first << "," << key.second << ")" << endl;
cout << "eta : " << eta << endl;
cout << "phi : " << phi << endl;
cout << "emE : " << emE << endl;
cout << "hadE : " << hadE << endl;
}
RtgPhoton::RtgPhoton(){
Init();
}
RtgPhoton::~RtgPhoton(){}
void RtgPhoton::Init(){
trackIndex = -1;
n3D = 0;
etCorr = 0;
eCorr = 0;
hadEm = 0;
cesChi2Mean = 0;
trackPt = 0;
isoEtCorr = 0;
trackIso = 0;
cesX = 0;
cesZ = 0;
cesE2 = 0;
cesEt2 = 0;
detEta = 0;
detPhi = 0;
momentum.SetXYZT(0,0,0,0);
towerList.clear();
}
void RtgPhoton::Clear(const Option_t *option){
towerList.clear();
}
void RtgPhoton::Print(const Option_t *option) const{
cout << "trackIndex : " << trackIndex << endl;
cout << "n3D : " << n3D << endl;
cout << "etCorr : " << etCorr << endl;
cout << "eCorr : " << eCorr << endl;
cout << "hadEm : " << hadEm << endl;
cout << "cesChi2Mean : " << cesChi2Mean << endl;
cout << "trackPt : " << trackPt << endl;
cout << "isoEtCorr : " << isoEtCorr << endl;
cout << "trackIso : " << trackIso << endl;
cout << "cesX : " << cesX << endl;
cout << "cesZ : " << cesZ << endl;
cout << "cesE2 : " << cesE2 << endl;
cout << "cesEt2 : " << cesEt2 << endl;
cout << "detEta : " << detEta << endl;
cout << "detPhi : " << detPhi << endl;
cout << "momentum = "; PrintVector(momentum);
cout << "towerList :";
for(int i=0; i<towerList.size(); i++)
cout << " (" << towerList[i].first << "," << towerList[i].second << ")";
cout << endl;
}
RtgElectron::RtgElectron(){
Init();
}
RtgElectron::~RtgElectron(){}
void RtgElectron::Init(){
trackIndex = -1;
fiducial = 0;
et = 0;
pt = 0;
lshr = 0;
eOverP = 0;
hadEm = 0;
calIsoEt = 0;
qDeltaX = 0;
deltaZ = 0;
cesStripChi2 = 0;
cesWireChi2 = 0;
detEta = 0;
detPhi = 0;
d0Corrected = 0;
momentum.SetXYZT(0,0,0,0);
towerList.clear();
}
void RtgElectron::Clear(const Option_t *option){
towerList.clear();
}
void RtgElectron::Print(const Option_t *option) const{
cout << "trackIndex : " << trackIndex << endl;
cout << "fiducial : " << fiducial << endl;
cout << "et : " << et << endl;
cout << "pt : " << pt << endl;
cout << "lshr : " << lshr << endl;
cout << "eOverP : " << eOverP << endl;
cout << "hadEm : " << hadEm << endl;
cout << "calIsoEt : " << calIsoEt << endl;
cout << "qDeltaX : " << qDeltaX << endl;
cout << "deltaZ : " << deltaZ << endl;
cout << "cesStripChi2 : " << cesStripChi2 << endl;
cout << "cesWireChi2 : " << cesWireChi2 << endl;
cout << "detEta : " << detEta << endl;
cout << "detPhi : " << detPhi << endl;
cout << "d0Corrected : " << d0Corrected << endl;
cout << "momentum = "; PrintVector(momentum);
cout << "towerList :";
for(int i=0; i<towerList.size(); i++)
cout << " (" << towerList[i].first << "," << towerList[i].second << ")";
cout << endl;
}
RtgMuon::RtgMuon(){
Init();
}
RtgMuon::~RtgMuon(){}
void RtgMuon::Init(){
type = 0;
hasNoStubs = 0;
bestTrackIndex = -1;
secondBestTrackIndex = -1;
emEnergy = 0;
hadEnergy = 0;
emEt = 0;
hadEt = 0;
coneR4EmEt = 0;
coneR4HadEt = 0;
cmuDx = 0;
cmpDx = 0;
cmxDx = 0;
bmuDx = 0;
d0Corrected = 0;
momentum.SetXYZT(0,0,0,0);
towerList.clear();
}
void RtgMuon::Clear(const Option_t *option){
towerList.clear();
}
void RtgMuon::Print(const Option_t *option) const{
cout << "type : " << type << endl;
cout << "hasNoStubs : " << hasNoStubs << endl;
cout << "bestTrackIndex : " << bestTrackIndex << endl;
cout << "secondBestTrackIndex : " << secondBestTrackIndex << endl;
cout << "emEnergy : " << emEnergy << endl;
cout << "hadEnergy : " << hadEnergy << endl;
cout << "emEt : " << emEt << endl;
cout << "hadEt : " << hadEt << endl;
cout << "coneR4EmEt : " << coneR4EmEt << endl;
cout << "coneR4HadEt : " << coneR4HadEt << endl;
cout << "cmuDx : " << cmuDx << endl;
cout << "cmpDx : " << cmpDx << endl;
cout << "cmxDx : " << cmxDx << endl;
cout << "bmuDx : " << bmuDx << endl;
cout << "d0Corrected : " << d0Corrected << endl;
cout << "momentum = "; PrintVector(momentum);
cout << "towerList :";
for(int i=0; i<towerList.size(); i++)
cout << " (" << towerList[i].first << "," << towerList[i].second << ")";
cout << endl;
}
RtgTau::RtgTau(){
Init();
}
RtgTau::~RtgTau(){}
void RtgTau::Init(){
seedTrackIndex = -1;
nTowers = 0;
towerMatchedJetIndex = -1;
towerMatchedJet4Index = -1;
referenceVertexZ = 0;
clusterDetEta = 0;
emfraction = 0;
clusterEt = 0;
isoCalEt = 0;
isoEmEt = 0;
isoCalEtDefault = 0;
isoEmEtDefault = 0;
isoMaxTowerEt = 0;
isoNTowers = 0;
d0Corrected = 0;
nMuonStubs = 0;
nMuonHits = 0;
// Tau signal cone quantities
nTracks = 0;
nPi0s = 0;
charge = 0;
triggerIsoFlag = 0;
seedTrackZCes = 0;
isoNTracks = 0;
isoNTracks1030 = 0;
isoNPi0s = 0;
isoPi0sEt = 0;
isoScalarSumPt = 0;
isoAlphaMinTrack = 0;
isoAlphaMinPi0 = 0;
isoAlphaMinTrack2 = 0;
isoAlphaMinPi02 = 0;
clusterMomentum.SetXYZT(0,0,0,0);
towerList.clear();
}
void RtgTau::Clear(const Option_t *option){
towerList.clear();
}
void RtgTau::Print(const Option_t *option) const{
cout << "seedTrackIndex : " << seedTrackIndex << endl;
cout << "nTowers : " << nTowers << endl;
cout << "towerMatchedJetIndex : " << towerMatchedJetIndex << endl;
cout << "towerMatchedJet4Index : " << towerMatchedJet4Index << endl;
cout << "referenceVertexZ : " << referenceVertexZ << endl;
cout << "clusterDetEta : " << clusterDetEta << endl;
cout << "emfraction : " << emfraction << endl;
cout << "clusterEt : " << clusterEt << endl;
cout << "isoCalEt : " << isoCalEt << endl;
cout << "isoEmEt : " << isoEmEt << endl;
cout << "isoCalEtDefault : " << isoCalEtDefault << endl;
cout << "isoEmEtDefault : " << isoEmEtDefault << endl;
cout << "isoMaxTowerEt : " << isoMaxTowerEt << endl;
cout << "isoNTowers : " << isoNTowers << endl;
cout << "d0Corrected : " << d0Corrected << endl;
cout << "nMuonStubs : " << nMuonStubs << endl;
cout << "nMuonHits : " << nMuonHits << endl;
cout << "nTracks : " << nTracks << endl;
cout << "nPi0s : " << nPi0s << endl;
cout << "charge : " << charge << endl;
cout << "triggerIsoFlag : " << triggerIsoFlag << endl;
cout << "seedTrackZCes : " << seedTrackZCes << endl;
cout << "isoNTracks : " << isoNTracks << endl;
cout << "isoNTracks1030 : " << isoNTracks1030 << endl;
cout << "isoNPi0s : " << isoNPi0s << endl;
cout << "isoPi0sEt : " << isoPi0sEt << endl;
cout << "isoScalarSumPt : " << isoScalarSumPt << endl;
cout << "isoAlphaMinTrack : " << isoAlphaMinTrack << endl;
cout << "isoAlphaMinPi0 : " << isoAlphaMinPi0 << endl;
cout << "isoAlphaMinTrack2 : " << isoAlphaMinTrack2 << endl;
cout << "isoAlphaMinPi02 : " << isoAlphaMinPi02 << endl;
cout << "clusterMomentum = "; PrintVector(clusterMomentum);
cout << "towerList :";
for(int i=0; i<towerList.size(); i++)
cout << " (" << towerList[i].first << "," << towerList[i].second << ")";
cout << endl;
}
RtgPi0::RtgPi0(){
Init();
}
RtgPi0::~RtgPi0(){}
void RtgPi0::Init(){
phi = 0;
eta = 0;
e = 0;
}
void RtgPi0::Clear(const Option_t *option){}
void RtgPi0::Print(const Option_t *option) const{
cout << "phi : " << phi << endl;
cout << "eta : " << eta << endl;
cout << "e : " << e << endl;
}
RtgCesMatch::RtgCesMatch(){
Init();
}
RtgCesMatch::~RtgCesMatch(){}
void RtgCesMatch::Init(){
type = 0;
iEta = -1;
iPhi = -1;
iEtaRel = -2;
iPhiRel = -2;
e = 0;
phi = 0;
z = 0;
xLocal = 0;
zLocal = 0;
side = -1;
wedge = -1;
halfWedge = -1;
pi0Index = -1;
}
void RtgCesMatch::Clear(const Option_t *option){}
void RtgCesMatch::Print(const Option_t *option) const{
cout << "type : " << type << endl;
cout << "iEta : " << iEta << endl;
cout << "iPhi : " << iPhi << endl;
cout << "iEtaRel : " << iEtaRel << endl;
cout << "iPhiRel : " << iPhiRel << endl;
cout << "e : " << e << endl;
cout << "phi : " << phi << endl;
cout << "z : " << z << endl;
cout << "xLocal : " << xLocal << endl;
cout << "zLocal : " << zLocal << endl;
cout << "side : " << side << endl;
cout << "wedge : " << wedge << endl;
cout << "halfWedge : " << halfWedge << endl;
cout << "pi0Index : " << pi0Index << endl;
}
RtgJet::RtgJet(){
Init();
}
RtgJet::~RtgJet(){}
void RtgJet::Init(){
vertexZ = 0;
nTowers = 0;
nTracks = 0;
etaDetector = 0;
emFraction = 0;
chargeFraction = 0;
et = 0;
etaEta = 0;
etaPhi = 0;
phiPhi = 0;
width = 0;
// 0:L1, 1:L2, 2:L3
for(int i=0; i<3; i++){
triggered20[i] = 0;
triggered50[i] = 0;
triggered70[i] = 0;
triggered100[i] = 0;
}
momentum.SetXYZT(0,0,0,0);
towerList.clear();
}
void RtgJet::Clear(const Option_t *option){
towerList.clear();
}
void RtgJet::Print(const Option_t *option) const{
cout << "vertexZ : " << vertexZ << endl;
cout << "nTowers : " << nTowers << endl;
cout << "nTracks : " << nTracks << endl;
cout << "etaDetector : " << etaDetector << endl;
cout << "emFraction : " << emFraction << endl;
cout << "chargeFraction : " << chargeFraction << endl;
cout << "et : " << et << endl;
cout << "etaEta : " << etaEta << endl;
cout << "etaPhi : " << etaPhi << endl;
cout << "phiPhi : " << phiPhi << endl;
cout << "width : " << width << endl;
// 0:L1, 1:L2, 2:L3
for(int i=0; i<3; i++){
cout << "triggered20["<<i<<"] : " << triggered20[i] << endl;
cout << "triggered50["<<i<<"] : " << triggered50[i] << endl;
cout << "triggered70["<<i<<"] : " << triggered70[i] << endl;
cout << "triggered100["<<i<<"] : " << triggered100[i] << endl;
}
cout << "momentum = "; PrintVector(momentum);
cout << "towerList :";
for(int i=0; i<towerList.size(); i++)
cout << " (" << towerList[i].first << "," << towerList[i].second << ")";
cout << endl;
}
RtgBoson::RtgBoson(){
Init();
}
RtgBoson::~RtgBoson(){}
void RtgBoson::Init(){
bosonID = 0;
boson.SetXYZT(0,0,0,0);
for(int i=0;i<2;i++) tau[i].SetXYZT(0,0,0,0);
radiation.SetXYZT(0,0,0,0);
for(int i=0;i<2;i++){
tauVertex[i].SetXYZ(0,0,0);
tauNu[i].SetXYZT(0,0,0,0);
tauVisibles[i].SetXYZT(0,0,0,0);
tauTracks[i].SetXYZT(0,0,0,0);
tauSeedTrack[i].SetXYZT(0,0,0,0);
tauPi0s[i].SetXYZT(0,0,0,0);
tauCharge[i] = 0;
tauNVisibles[i] = 0;
tauNTracks[i] = 0;
tauSeedTrackCharge[i] = 0;
tauNPi0s[i] = 0;
tauSeedTrackID[i] = 0;
tauMaxAlphaNu[i] = -999.0;
tauMaxAlphaTrack[i] = -999.0;
tauMaxAlphaPi0[i] = -999.0;
tauMaxAlphaVisibles[i] = -999.0;
tauSeedTrackZ0[i] = -999.0;
}
}
void RtgBoson::Clear(const Option_t *option){}
void RtgBoson::Print(const Option_t *option) const{
cout << "bosonID : " << bosonID << endl;
cout << "boson : "; PrintVector(boson);
cout << "radiation : "; PrintVector(radiation);
for(int i=0; i<2; i++){
cout << "tau["<<i<<"] : "; PrintVector(tau[i]);
cout << "tauVertex["<<i<<"] : "; PrintVector(tauVertex[i]);
cout << "tauNu["<<i<<"] : "; PrintVector(tauNu[i]);
cout << "tauVisibles["<<i<<"] : "; PrintVector(tauVisibles[i]);
cout << "tauTracks["<<i<<"] : "; PrintVector(tauTracks[i]);
cout << "tauSeedTrack["<<i<<"] : "; PrintVector(tauSeedTrack[i]);
cout << "tauPi0s["<<i<<"] : "; PrintVector(tauPi0s[i]);
cout << "tauCharge["<<i<<"] : " << tauCharge[i] << endl;
cout << "tauNVisibles["<<i<<"] : " << tauNVisibles[i] << endl;
cout << "tauNTracks["<<i<<"] : " << tauNTracks[i] << endl;
cout << "tauSeedTrackCharge["<<i<<"] : " << tauSeedTrackCharge[i] << endl;
cout << "tauNPi0s["<<i<<"] : " << tauNPi0s[i] << endl;
cout << "tauSeedTrackID["<<i<<"] : " << tauSeedTrackID[i] << endl;
cout << "tauMaxAlphaNu["<<i<<"] : " << tauMaxAlphaNu[i] << endl;
cout << "tauMaxAlphaTrack["<<i<<"] : " << tauMaxAlphaTrack[i] << endl;
cout << "tauMaxAlphaPi0["<<i<<"] : " << tauMaxAlphaPi0[i] << endl;
cout << "tauMaxAlphaVisibles["<<i<<"]: " << tauMaxAlphaVisibles[i] << endl;
cout << "tauSeedTrackZ0["<<i<<"] : " << tauSeedTrackZ0[i] << endl;
}
}
void PrintVector(const TLorentzVector &p) {
cout << "(" << p.Px() << ", " << p.Py() << ", "
<< p.Pz() << "; " << p.E() << ")" << endl;
}
void PrintVector(const TVector3 &p) {
cout << "(" << p.Px() << ", " << p.Py() << ", "
<< p.Pz() << ")" << endl;
}
void makeRtgTree(){
TFile* f = new TFile("testRtgObject.root","RECREATE");
TTree* t = new TTree("rtgTree","Rutgers Tau Group Tree");
RtgEvent* evt = new RtgEvent();
t->Branch("rtgBranch","RtgEvent",&evt,64000,1);
TRandom* ran = new TRandom();
for(int i=0; i<100; i++){
evt->runNumber = (int) ran->Integer(1000);
evt->eventNumber = (int) ran->Integer(1000);
for(int j=0; j<NMET; j++) evt->rtgMet[j]->exSum = ran->Rndm();
for(int j=0; j<ran->Integer(10); j++){
RtgTrack rtgTrack;
rtgTrack.nSegAx = ran->Integer(50);
rtgTrack.momentum.SetXYZ(ran->Rndm(),ran->Rndm(),ran->Rndm());
evt->trackList[j] = rtgTrack;
}
for(int j=0; j<ran->Integer(5); j++){
RtgTower rtgTower;
rtgTower.key = make_pair(ran->Integer(50),ran->Integer(50));
rtgTower.hadPhi = ran->Rndm();
evt->towerList[rtgTower.key] = rtgTower;
}
for(int j=0; j<ran->Integer(3); j++){
RtgPhoton rtgPhoton;
rtgPhoton.trackIndex = ran->Integer(10);
rtgPhoton.momentum.SetXYZT(ran->Rndm(),ran->Rndm(),ran->Rndm(),ran->Rndm());
evt->photonList[j] = rtgPhoton;
}
for(int j=0; j<ran->Integer(3); j++){
RtgElectron rtgElectron;
rtgElectron.trackIndex = ran->Integer(10);
rtgElectron.momentum.SetXYZT(ran->Rndm(),ran->Rndm(),ran->Rndm(),ran->Rndm());
evt->electronList[j] = rtgElectron;
}
for(int j=0; j<ran->Integer(3); j++){
RtgMuon rtgMuon;
rtgMuon.type = ran->Integer(10);
rtgMuon.momentum.SetXYZT(ran->Rndm(),ran->Rndm(),ran->Rndm(),ran->Rndm());
evt->muonList[j] = rtgMuon;
}
for(int j=0; j<ran->Integer(3); j++){
RtgTau rtgTau;
rtgTau.seedTrackIndex = ran->Integer(10);
rtgTau.clusterMomentum.SetXYZT(ran->Rndm(),ran->Rndm(),ran->Rndm(),ran->Rndm());
evt->tauList[j] = rtgTau;
}
for(int j=0; j<ran->Integer(3); j++){
RtgPi0 rtgPi0;
rtgPi0.e = ran->Rndm();
evt->pi0List[j] = rtgPi0;
}
for(int j=0; j<ran->Integer(3); j++){
RtgCesMatch rtgCesMatch;
rtgCesMatch.type = ran->Integer(10);
rtgCesMatch.e = ran->Rndm();
evt->cesMatchList[j] = rtgCesMatch;
}
for(int j=0; j<ran->Integer(5); j++){
RtgJet rtgJet;
rtgJet.nTowers = ran->Integer(10);
rtgJet.momentum.SetXYZT(ran->Rndm(),ran->Rndm(),ran->Rndm(),ran->Rndm());
evt->jetList[j] = rtgJet;
}
t->Fill();
evt->Clear();
}// for i
t->Write();
f->Close();
delete ran;
delete evt;
}
void readRtgTree(){
TFile* f = new TFile("testRtgObject.root","READ");
TTree* t = (TTree*) f->Get("rtgTree");
RtgEvent* rtgEvent = 0;
t->SetBranchAddress("rtgBranch",&rtgEvent);
int nmax = t->GetEntries();
TRandom* ran = new TRandom();
for(int i=0; i<nmax; i++){
t->GetEntry(i);
if(ran->Rndm() > 0.9) {
rtgEvent->Print();
}
}
delete ran;
f->Close();
}
void TestRtgObject(){
makeRtgTree();
readRtgTree();
}
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:16 MET