Hi, Rooters
I need to manipulate specific data from a huge Tree file to be add in other new Tree, next are steps I do:
- Read the Tree file.
- Relate Tree Branch with variables I want.
- Make new Tree (TreeDataMOD) and add branch.
- Define loop for select specific data (where GetPMT and GetTank are functions previously declared)
- Fill new Tree and write it.
Trouble is: When I browse new Tree, data added to branch TimeA , ChannelA ,ChargeA is wrong, mainly in branch ChannelA where appear some values near zero (rare) and others where it should be(near value: 400, see in image). However in branch TimeD , ChannelD,ChargeD values are OK. I have checked data entering to A’ branches as well as D branches and are good, so I don’t understand why is this happening.
Please I’ll appreciate any help. I attach images for better understanding.
Thanks
TFile *f = TFile::Open("/home/ariel/Escritorio/Data.root");
TTree* hits;
f->GetObject("hits", hits);
hits->SetBranchAddress("Channel",&Channel);
hits->SetBranchAddress("CalibratedTime",&CTime);
hits->SetBranchAddress("CalibratedCharge",&CCharge);
TFile *Dfile = new TFile("/home/ariel/Escritorio/TreeDataMOD.root", "RECREATE");
TTree *TreeDataMOD = new TTree("TreeDataMOD");
TreeDataMOD->Branch("TimeA",&TimeA,"TimeA/D");
TreeDataMOD->Branch("ChargeA",&ChargeA, "ChargeA/D");
TreeDataMOD->Branch("ChannelA",&ChannelA, "ChannelA/i");
TreeDataMOD->Branch("TimeD",&TimeD,"TimeD/D");
TreeDataMOD->Branch("ChargeD",&ChargeD, ChargeD/D);
TreeDataMOD->Branch("ChannelD",&ChannelD, "ChannelD/i");
for ( int i=0 ; i<hits->GetEntries() ; i++){
hits-> GetEntry(i);
iChannel=Channel;
iCharge=CCharge;
iTime=CTime;
if ( GetTank(iChannel)!=100) continue;
if (GetPMT(iChannel) == 0){
TimeA = iTime;
ChannelA = iChannel;
ChargeA = iCharge;
}
if (GetPMT(iChannel) == 3){
TimeD= iTime;
ChannelD = iChannel;
ChargeD = iCharge;
}
TreeDataMOD->Fill();
}
TreeDataMOD->Write();