struct myTree_t {
 vector <Int_t> *   REC_Particle_pid = 0;
 vector <Int_t> *   RECFT_Particle_pid = 0;
 vector <Float_t> * REC_Particle_px = 0;
 vector <Float_t> * REC_Particle_py = 0;
 vector <Float_t> * REC_Particle_pz = 0;
 vector <Float_t> * REC_Particle_vx = 0;
 vector <Float_t> * REC_Particle_vy = 0;
 vector <Float_t> * REC_Particle_vz = 0;
 vector <Float_t> * REC_Particle_beta = 0;
 vector <Float_t> * RECFT_Particle_beta = 0;
 std::vector <Short_t> * RECFT_Particle_status = 0;

  std::vector<Short_t> * REC_Calorimeter_index = 0;
  std::vector<Short_t> * REC_Calorimeter_pindex = 0;
  std::vector<Char_t> * REC_Calorimeter_detector = 0;
  std::vector<Char_t> * REC_Calorimeter_sector = 0;
  std::vector<Char_t> * REC_Calorimeter_layer = 0;
  std::vector<Float_t> * REC_Calorimeter_energy = 0;
  std::vector<Float_t> * REC_Calorimeter_time = 0;
  std::vector<Float_t> * REC_Calorimeter_path = 0;
  std::vector<Float_t> * REC_Calorimeter_chi2 = 0;
  std::vector<Float_t> * REC_Calorimeter_x = 0;
  std::vector<Float_t> * REC_Calorimeter_y = 0;
  std::vector<Float_t> * REC_Calorimeter_z = 0;
  std::vector<Float_t> * REC_Calorimeter_hx = 0;
  std::vector<Float_t> * REC_Calorimeter_hy = 0;
  std::vector<Float_t> * REC_Calorimeter_hz = 0;
  std::vector<Float_t> * REC_Calorimeter_lu = 0;
  std::vector<Float_t> * REC_Calorimeter_lv = 0;
  std::vector<Float_t> * REC_Calorimeter_lw = 0;
  std::vector<Float_t> * REC_Calorimeter_du = 0;
  std::vector<Float_t> * REC_Calorimeter_dv = 0;
  std::vector<Float_t> * REC_Calorimeter_dw = 0;
  std::vector<Float_t> * REC_Calorimeter_m2u = 0;
  std::vector<Float_t> * REC_Calorimeter_m2v = 0;
  std::vector<Float_t> * REC_Calorimeter_m2w = 0;
  std::vector<Float_t> * REC_Calorimeter_m3u = 0;
  std::vector<Float_t> * REC_Calorimeter_m3v = 0;
  std::vector<Float_t> * REC_Calorimeter_m3w = 0;
  std::vector<Short_t> * REC_Calorimeter_status = 0;


  std::vector<Short_t>  * REC_Cherenkov_index;
  std::vector<Short_t>  * REC_Cherenkov_pindex;
  std::vector<Char_t>  * REC_Cherenkov_detector;
  std::vector<Char_t>  * REC_Cherenkov_sector;
  std::vector<Short_t>  * REC_Cherenkov_nphe;
  std::vector<Float_t>  * REC_Cherenkov_time;
  std::vector<Float_t>  * REC_Cherenkov_path;
  std::vector<Float_t>  * REC_Cherenkov_chi2;
  std::vector<Float_t>  * REC_Cherenkov_x;
  std::vector<Float_t>  * REC_Cherenkov_y;
  std::vector<Float_t>  * REC_Cherenkov_z;
  std::vector<Float_t>  * REC_Cherenkov_dtheta;
  std::vector<Float_t>  * REC_Cherenkov_dphi;
  std::vector<Short_t>  * REC_Cherenkov_status;

  std::vector<Int_t>    * MC_Particle_pid = 0;
  std::vector<Float_t>  * MC_Particle_px = 0;
  std::vector<Float_t>  * MC_Particle_py = 0;
  std::vector<Float_t>  * MC_Particle_pz = 0;
  std::vector<Float_t>  * MC_Particle_vx = 0;
  std::vector<Float_t>  * MC_Particle_vy = 0;
  std::vector<Float_t>  * MC_Particle_vz = 0;
  std::vector<Float_t>  * MC_Particle_vt = 0;

  std::vector<Float_t>  * MC_Event_ebeam = 0;
 
};

void getBranchesStage1(TTree *inTree, myTree_t *myTree, bool mcData){
  inTree->SetBranchAddress("REC_Particle_pid",&myTree->REC_Particle_pid);
  inTree->SetBranchAddress("REC_Particle_px",&myTree->REC_Particle_px);
  inTree->SetBranchAddress("REC_Particle_py",&myTree->REC_Particle_py);
  inTree->SetBranchAddress("REC_Particle_pz",&myTree->REC_Particle_pz);
  inTree->SetBranchAddress("REC_Particle_vx",&myTree->REC_Particle_vx);
  inTree->SetBranchAddress("REC_Particle_vy",&myTree->REC_Particle_vy);
  inTree->SetBranchAddress("REC_Particle_vz",&myTree->REC_Particle_vz);
  inTree->SetBranchAddress("REC_Particle_beta",&myTree->REC_Particle_beta);
  inTree->SetBranchAddress("RECFT_Particle_status",&myTree->RECFT_Particle_status);
  inTree->SetBranchAddress("RECFT_Particle_beta",&myTree->RECFT_Particle_beta);
  inTree->SetBranchAddress("RECFT_Particle_pid",&myTree->RECFT_Particle_pid);

  inTree->SetBranchAddress("REC_Calorimeter_index",&myTree->REC_Calorimeter_index);
  inTree->SetBranchAddress("REC_Calorimeter_pindex",&myTree->REC_Calorimeter_pindex);
  inTree->SetBranchAddress("REC_Calorimeter_detector",&myTree->REC_Calorimeter_detector);
  inTree->SetBranchAddress("REC_Calorimeter_sector",&myTree->REC_Calorimeter_sector);
  inTree->SetBranchAddress("REC_Calorimeter_layer",&myTree->REC_Calorimeter_layer);//1->PCAL,4->EC Inner,7->EC Outer
  inTree->SetBranchAddress("REC_Calorimeter_energy",&myTree->REC_Calorimeter_energy);
  inTree->SetBranchAddress("REC_Calorimeter_time",&myTree->REC_Calorimeter_time);
  inTree->SetBranchAddress("REC_Calorimeter_path",&myTree->REC_Calorimeter_path);
  inTree->SetBranchAddress("REC_Calorimeter_chi2",&myTree->REC_Calorimeter_chi2);
 
  inTree->SetBranchAddress("REC_Calorimeter_lu",&myTree->REC_Calorimeter_x);
  inTree->SetBranchAddress("REC_Calorimeter_lv",&myTree->REC_Calorimeter_y);
  inTree->SetBranchAddress("REC_Calorimeter_lw",&myTree->REC_Calorimeter_z);

  inTree->SetBranchAddress("REC_Calorimeter_lu",&myTree->REC_Calorimeter_lu);//"distance on U-side"
  inTree->SetBranchAddress("REC_Calorimeter_lv",&myTree->REC_Calorimeter_lv);//"distance on V-side"
  inTree->SetBranchAddress("REC_Calorimeter_lw",&myTree->REC_Calorimeter_lw);//"distance on W-side"


  if (mcData == true) {
    inTree->SetBranchAddress("MC_Event_ebeam",&myTree->MC_Event_ebeam);
    inTree->SetBranchAddress("MC_Particle_pid",&myTree->MC_Particle_pid);
    inTree->SetBranchAddress("MC_Particle_px",&myTree->MC_Particle_px);
    inTree->SetBranchAddress("MC_Particle_py",&myTree->MC_Particle_py);
    inTree->SetBranchAddress("MC_Particle_pz",&myTree->MC_Particle_pz);
    inTree->SetBranchAddress("MC_Particle_vx",&myTree->MC_Particle_vx);
    inTree->SetBranchAddress("MC_Particle_vy",&myTree->MC_Particle_vy);
    inTree->SetBranchAddress("MC_Particle_vz",&myTree->MC_Particle_vz);
    inTree->SetBranchAddress("MC_Particle_vt",&myTree->MC_Particle_vt);
  }
  //inTree->SetBranchAddress("REC_Cherenkov_index",&myTree->REC_Cherenkov_index);
  //inTree->SetBranchAddress("REC_Cherenkov_pindex",&myTree->REC_Cherenkov_pindex);
  //inTree->SetBranchAddress("REC_Cherenkov_detector",&myTree->REC_Cherenkov_detector);
  //inTree->SetBranchAddress("REC_Cherenkov_sector",&myTree->REC_Cherenkov_sector);
  //inTree->SetBranchAddress("REC_Cherenkov_nphe",&myTree->REC_Cherenkov_nphe);
  //inTree->SetBranchAddress("REC_Cherenkov_time",&myTree->REC_Cherenkov_time);
  //inTree->SetBranchAddress("REC_Cherenkov_path",&myTree->REC_Cherenkov_path);
  //inTree->SetBranchAddress("REC_Cherenkov_chi2",&myTree->REC_Cherenkov_chi2);
  //inTree->SetBranchAddress("REC_Cherenkov_x",&myTree->REC_Cherenkov_x);
  //inTree->SetBranchAddress("REC_Cherenkov_y",&myTree->REC_Cherenkov_y);
  //inTree->SetBranchAddress("REC_Cherenkov_z",&myTree->REC_Cherenkov_z);
  //inTree->SetBranchAddress("REC_Cherenkov_dtheta",&myTree->REC_Cherenkov_dtheta);
  //inTree->SetBranchAddress("REC_Cherenkov_dphi",&myTree->REC_Cherenkov_dphi);
  //inTree->SetBranchAddress("REC_Cherenkov_status",&myTree->REC_Cherenkov_status);

}
