Segmentation fault when two independantly working functions are called

function 2: void EnergyDepositionInPaddles(TTree* mrdtree){ // Distributions of E Deposition in each Panel, bins are Scintillator Paddles // ============================================================================ // Create canvas and divide into pads for each layer. TCanvas edeposCanv2 = TCanvas("edeposCanv2","Title",8,59,1266,737); edeposCanv2.Clear(); edeposCanv2.Divide(4,3); // create array of total energy depositions in each layer Double_t* totedepinpanels = new Double_t[mrdnumlayers]; // set up aliases for paddle and panel number based on geant4 copy number mrdtree->SetAlias("mrdhit_panelnum",Form("TMath::Floor(mrdhit_copynum/%d)",mrdpaddlesperpanel)); mrdtree->SetAlias("mrdhit_paddlenum",Form("mrdhit_copynum-(mrdhit_panelnum*%d)",mrdpaddlesperpanel)); // loop over all panels for(Int_t panelnum=0;panelnum<mrdnumlayers;panelnum++){ edeposCanv2.cd(panelnum+1); // draw all hits, using alias to cut hits in a given panel, weighting each by their energy deposition mrdtree->Draw(Form("mrdhit_paddlenum>>edepinpanel%d(%d,1,%d)",panelnum,mrdpaddlesperpanel,mrdpaddlesperpanel+1),Form("mrdhit_edep*(mrdhit_panelnum==%d)",panelnum)); // retrieve the current pad TCanvas* currentcanvas = (TCanvas*)edeposCanv2.GetPrimitive(Form("edeposCanv2_%d",panelnum+1)); // retrieve the generated histogram from that pad TH1F* edepinpanel = (TH1F*)currentcanvas->GetPrimitive(Form("edepinpanel%d",panelnum)); // formatting edepinpanel->SetTitle(Form("Energy Deposition in MRD Layer %d;Paddle Number;Total Energy Deposited",panelnum)); edepinpanel->GetXaxis()->CenterLabels(); // store to output file edepinpanel->Write(); // integrate energy and add into total energy deposited in this panel Double_t totedepinpanel = edepinpanel->Integral(); totedepinpanels[panelnum]=totedepinpanel; } // save a picture of all plots to file edeposCanv2.cd(); edeposCanv2.Modified(); edeposCanv2.SaveAs("deposition in panels.png");