#include "Pamela.hh"

Pamela::Pamela(TTree *tree)
{
  // Set branch addresses
  if (tree == 0) return;
  fChain = tree;

  fChain->SetBranchAddress("Irun",&Irun);
  fChain->SetBranchAddress("Ievnt",&Ievnt);
  fChain->SetBranchAddress("Ipa",&Ipa);
  fChain->SetBranchAddress("X0",&X0);
  fChain->SetBranchAddress("Y0",&Y0);
  fChain->SetBranchAddress("Z0",&Z0);
  fChain->SetBranchAddress("Theta",&Theta);
  fChain->SetBranchAddress("Phi",&Phi);
  fChain->SetBranchAddress("P0",&P0);
  fChain->SetBranchAddress("Nthcal",&Nthcal);
  fChain->SetBranchAddress("Icaplane",Icaplane);
  fChain->SetBranchAddress("Icastrip",Icastrip);
  fChain->SetBranchAddress("Icamod",Icamod);
  fChain->SetBranchAddress("Enestrip",Enestrip);

  // Disable all branches but the needed ones
  fChain->SetBranchStatus("*",0);
  fChain->SetBranchStatus("Irun",1);
  fChain->SetBranchStatus("Ievnt",1);
  fChain->SetBranchStatus("Ipa",1);
  fChain->SetBranchStatus("X0",1);
  fChain->SetBranchStatus("Y0",1);
  fChain->SetBranchStatus("Z0",1);
  fChain->SetBranchStatus("Theta",1);
  fChain->SetBranchStatus("Phi",1);
  fChain->SetBranchStatus("P0",1);
  fChain->SetBranchStatus("Nthcal",1);
  fChain->SetBranchStatus("Icaplane",1);
  fChain->SetBranchStatus("Icastrip",1);
  fChain->SetBranchStatus("Icamod",1);
  fChain->SetBranchStatus("Enestrip",1);

  // Get branch pointers
  b_Irun = fChain->GetBranch("Irun");
  b_Ievnt = fChain->GetBranch("Ievnt");
  b_Ipa = fChain->GetBranch("Ipa");
  b_X0 = fChain->GetBranch("X0");
  b_Y0 = fChain->GetBranch("Y0");
  b_Z0 = fChain->GetBranch("Z0");
  b_Theta = fChain->GetBranch("Theta");
  b_Phi = fChain->GetBranch("Phi");
  b_P0 = fChain->GetBranch("P0");
  b_Nthcal = fChain->GetBranch("Nthcal");
  b_Icaplane = fChain->GetBranch("Icaplane");
  b_Icastrip = fChain->GetBranch("Icastrip");
  b_Icamod = fChain->GetBranch("Icamod");
  b_Enestrip = fChain->GetBranch("Enestrip");
}

// Till now there's no need for my own Destructor

Double_t Pamela::EneCalo(Int_t entry)
{
  Double_t EneTot = 0;
  Int_t nentries = fChain->GetEntriesFast();
  Int_t i = 0;

  if (entry >= 0) {
    i = entry;
    nentries = entry + 1;
  }

  for ( ; i < nentries; i++) {
    fChain->GetEntry(i);
    for (Int_t j = 0; j < Nthcal; j++) {
      EneTot += Enestrip[j];
    }
  }
  return EneTot;
}


