Re: Script failing at unexpected point

From: Axel Naumann <Axel.Naumann_at_cern.ch>
Date: Mon, 16 Mar 2009 09:40:28 +0100


Hi,

sorry, I misread the error (and thus your call) as a TTree::Draw(). I have no idea what you are trying to do with TH2F::Draw - do you maybe mean to call TREE->Draw?

Cheers, Axel.

Russell Leslie wrote:
> Dear Rene and Axel,
>
> Thank you both,
>
> Rene, I should have realised that it would end up unnecessarily huge (I don't know why I didn't think of it in those terms).
>
> The script also failed at the point trying to produce a TH2F crossing X.GE1:XPE1 (since sending my earlier email I found out that each TD was gated to only produce valid timings when crossed to a particular GE (e.g. GE1 with TD1).
>
> Axel, when I try TH2f with a string as per your suggestion I get the following error messages
>
> "Error: Can't call TH2F::Draw("X.GE1:X.PE1>>hTD1_GE1_PE1","gt1g1p1||pt1g1p1") in current scope sortRIV-T1G1P1.C:90:
> Possible candidates are...
> (in TH2F)
> (in TH2)
> (in TH1)
> /usr/lib/root/5.18/libHist.so -1:-1 0 public: virtual void TH1::Draw(Option_t* option="");
> public: virtual void TObject::Draw(Option_t* option="");
> *** Interpreter error recovered ***"
>
> Any guidance you can give on where I am going wrong with the script (in 2d form) would be greatly appreciated?
>
> Regards
>
> Russell Leslie
> Nuclear Physics
> R.S.Phys.S.E.
> ANU
>
> ----- Original Message -----
> From: Rene Brun <Rene.Brun_at_cern.ch>
> Date: Monday, March 16, 2009 6:15 pm
> Subject: Re: [ROOT] Script failing at unexpected point
> To: Russell Leslie <russell.leslie_at_anu.edu.au>
> Cc: roottalk_at_lxbuild091.cern.ch
>

>> You are creating a 3-D histogram with 4096*4096*8192*4 =  
>> 550 GBytes !!!  in
>> TH3F *hTD1GE1PE1 = new 
>> TH3F("hTD1_GE1_PE1","",4096,10.5,4090,4096,10.5,4090,8192,10.5,8191.5);
>>
>> Rene Brun
>>
>> Russell Leslie wrote:
>>> Greetings all,
>>>
>>> I am trying to do a basic sort of data that was collected from 
>> an 
>>> experiment last week (I haven't had problems with related 
>> sorts in the 
>>> last few months).  The data collection system used four 
>> germanium 
>>> detectors (GE 1 to 4), five silicon particle detectors (PE 1 
>> to 5) and 
>>> four time discriminator circuits (TD 1 to 4). 
>>>
>>> My first task is to generate a series of cuts of coincidences 
>> between 
>>> each GE, PE and TD (80 in all - 4x5x4).  The first step 
>> is to just try 
>>> the single case with GE1, PE1 and TD1.  I can do a 
>> related manual sort 
>>> using the treeviewer, but I need to be able to automate the 
>> process 
>>> (for some 20 run files each which would need 80 cuts/sorts).
>>>
>>> The script example below gives the following error message 
>> ""Error: 
>>> Can't call 
>>> TH3F::Draw("X.TD1:X.GE1:X.PE1>>hTD1_GE1_PE1",gt1g1p1||pt1g1p1) 
>> in 
>>> current scope sortRIV-T1G1P1.C:90:". 
>>>
>>> I can't figure out why the script falls over at this point and 
>> unless 
>>> I can get past this point I can't do the next important steps 
>> (doing 
>>> corrections for random coincidences and compton background).
>>>
>>> Any guidance you can give on what I am doing wrong would be 
>> greatly 
>>> appreciated.
>>>
>>> Regards
>>>
>>> Russell Leslie
>>> Nuclear Physics
>>> R.S.Phys.S.E.
>>> ANU
>>>
>>> {
>>>
>>>
>> //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> //%%%%%%%%%%%%%% Original data file from the experiment in 
>> ROOT format 
>>> %%%%%%%%%%%%%%%%%//
>>>
>>> TString fname="PD1060309_R05.root";
>>>
>>> TString tree_name="TREE";
>>>
>>> //
>>>
>>>
>> //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> //%%%%%%%%%%%%%%%%%%GERMANIUM 
>>> DETECTORS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//
>>>
>>> Double_t GE1_min = 750; Double_t GE1_max = 1250; // Sensible 
>> energy 
>>> range for GE1
>>>
>>>
>> //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> //%%%%%%%%%%%%%%%%%%PARTICLE 
>>> DETECTORS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//
>>>
>>> Double_t PE1_min = 300; Double_t PE1_max = 3300; // Sensible 
>> energy 
>>> range for PE1
>>>
>>>
>> //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> //%%%%%%%%% TDC limits for Random subtraction %%%%%%%%%%%%%%%%%%%//
>>>
>>> Double_t TD1_GE1_PE1_min = 3900; Double_t TD1_GE1_PE1_max = 
>> 4100; // 
>>> Peak limits
>>>
>>> Double_t TD1_GE1_PE1_L1 = 3400; Double_t TD1_GE1_PE1_L2 = 
>> 3800; // 
>>> Left background limits
>>>
>>> Double_t TD1_GE1_PE1_R1 = 4150; Double_t TD1_GE1_PE1_R2 = 
>> 4450; // 
>>> Right background limits
>>>
>>>
>> //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> //%%%%%%%%%%%%%%%% Total Gamma energy Cut %%%%%%%%%%%%%%%%%%%//
>>>
>>> TCut ra_GE1 = Form("X.GE1>%g && X.GE1<%g",GE1_min,GE1_max);
>>>
>>>
>> //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> //%%%%%%%%%%%%%%%% Total Particle Cut %%%%%%%%%%%%%%%%%%%//
>>>
>>> TCut ra_PE1 = Form("X.PE1>%g && X.PE1<%g",PE1_min,PE1_max);
>>>
>>>
>> //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> //%%%% Gamma/Particle TDC Cuts for Random Subtraction %%%%%%%//
>>>
>>> TCut t1g1p1 = Form("X.TD1_GE1_PE1>%g && 
>>> X.TD1_GE1_PE1<%g",TD1_GE1_PE1_min,TD1_GE1_PE1_max); //Block begin
>>>
>>> TCut t1g1p1L = Form("X.TD1_GE1_PE1>%g && 
>>> X.TD1_GE1_PE1<%g",TD1_GE1_PE1_L1,TD1_GE1_PE1_L2);
>>>
>>> TCut t1g1p1R = Form("X.TD1_GE1_PE1>%g && 
>>> X.TD1_GE1_PE1<%g",TD1_GE1_PE1_R1,TD1_GE1_PE1_R2);
>>>
>>>
>> //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> //%%%%%%%%%%%%% Individual cuts for Gamma Detectors 
>>> %%%%%%%%%%%%%%%%%%%%%%//
>>>
>>>
>> //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> TCut gt1g1p1 = ra_GE1 && t1g1p1;
>>>
>>> TCut gt1g1p1L = ra_GE1 && t1g1p1L;
>>>
>>> TCut gt1g1p1R = ra_GE1 && t1g1p1R;
>>>
>>>
>> //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> //%%%%%%%%%%%%% Individual cuts for Gamma Detectors 
>>> %%%%%%%%%%%%%%%%%%%%%%//
>>>
>>> TCut pt1g1p1 = ra_PE1 && t1g1p1;
>>>
>>> TCut pt1g1p1L = ra_PE1 && t1g1p1L;
>>>
>>> TCut pt1g1p1R = ra_PE1 && t1g1p1R;
>>>
>>>
>> //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> //%%%%%%%%%%%%% {Normalization Factor = (peak width in 
>>> TDC)/(background width in TDC)}%%%%%%%%%%%%%
>>>
>>> //%%%% Top & Bottom %%%%%%%//
>>>
>>> Double_t nrt1g1p1 = ((TD1_GE1_PE1_max - TD1_GE1_PE1_min +1) / 
>>> ((TD1_GE1_PE1_L2 - TD1_GE1_PE1_L1 +1) + (TD1_GE1_PE1_R2 - 
>>> TD1_GE1_PE1_R1 +1))); //Begin block
>>>
>>>
>> //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> //%%%%%%%%%%%%%%%% Sorted Matrices for TD1 GE1 PD1 
>> %%%%%%%%%%%%%%%%//>
>>> TString fTD1_GE1_PE1 = "Mat_TD1_GE1_PE1_RIV_PD106_R05.root"; 
>> TString 
>>> hTD1_GE1_PE1 = "hTD1_GE1_PE1"; //BEGIN BLOCK
>>>
>>> TString fTD1_GE1_PE1_TC = 
>> "Mat_TD1_GE1_PE1_RIV_PD106_TC_R05.root"; 
>>> TString hTD1_GE1_PE1_TC = "hTD1_GE1_PE1_TC";
>>>
>>> TString fTD1_GE1_PE1_C = 
>> "Mat_TD1_GE1_PE1_RIV_PD106_C_R05.root"; 
>>> TString hTD1_GE1_PE1_C = "hTD1_GE1_PE1_C";
>>>
>>>   
>>>
>>>
>> //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> //&&&&&&&&&&&&&&&&&&&& FINAL DATA SORTING 
>> &&&&&&&&&&&&&&&&&&&&&&&&&&&&&//>
>> //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> //%%%%%%%%%%%%%%%%%%%%% TD1 GE1 PD1 
>> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> //
>>>
>>>
>> //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%//>
>>> //%%%%%%%%%%%%%%%%%%%%% True + Chance %%%%%%%%%%%%%%%%%%%%%%%%%%%%//
>>>
>>> //
>>>
>>> TFile* f=TFile::Open( fname.Data(), "READ" );
>>>
>>> TTree *TREE = (TTree*)f.Get("tree_name");
>>>
>>> //
>>>
>>> TCanvas *C1 = new TCanvas("C1","Fitting canvas",10,10,400,200);
>>>
>>> C1->Divide(2,2);
>>>
>>> //
>>>
>>> C1->cd(1);
>>>
>>> TH3F *hTD1GE1PE1 = new 
>>>
>> TH3F("hTD1_GE1_PE1","",4096,10.5,4090,4096,10.5,4090,8192,10.5,8191.5);>
>>> //
>>>
>>> hTD1GE1PE1-
>>> Draw("X.TD1:X.GE1:X.PE1>>hTD1_GE1_PE1",gt1g1p1||pt1g1p1); 
>>> //Problem occurs here
>>>
>>> //
>>>
>>> hTD1GE1PE1->GetXaxis()->SetTitle("PE1");
>>>
>>> hTD1GE1PE1->GetYaxis()->SetTitle("GE1");
>>>
>>> hTD1GE1PE1->GetZaxis()->SetTitle("TD1");
>>>
>>> //
>>>
>>> TFile* f_out=TFile::Open( fhTD1_GE1_PE1_TC.Data(), "RECREATE" );
>>>
>>> hTD1GE1PE1->SetName(hTD1_GE1_PE1_TC.Data());
>>>
>>> f_out->cd();
>>>
>>> hTD1GE1PE1->Write();
>>>
>>> f_out->Close();
>>>
>>> //
>>>
>>> }
>>>

>
>
>
>
Received on Mon Mar 16 2009 - 09:38:53 CET

This archive was generated by hypermail 2.2.0 : Mon Mar 16 2009 - 17:50:02 CET