/[PAMELA software]/PamelaLevel2/src/PamLevel2.cpp
ViewVC logotype

Diff of /PamelaLevel2/src/PamLevel2.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.51 by mocchiut, Mon Oct 29 09:13:06 2007 UTC revision 1.52 by pam-fi, Mon Nov 5 13:10:13 2007 UTC
# Line 1  Line 1 
1  #include <PamLevel2.h>  #include <PamLevel2.h>
2    
3    
4    
5    /////////////////////////////////////////////////////////////////////////////
6    /////////////////////////////////////////////////////////////////////////////
7    /////////////////////////////////////////////////////////////////////////////
8    /////////////////////////////////////////////////////////////////////////////
9    
10    void GPamela::Clear(){
11        Irun   = 0;
12        Ievnt  = 0;
13        Ipa    = 0;
14        X0     = 0.;
15        Y0     = 0.;
16        Z0     = 0.;
17        Theta  = 0.;
18        Phi    = 0.;
19        P0     = 0.;
20        Nthtof  = 0;
21        Nthcat  = 0;
22        Nthcas  = 0;
23        Nthspe  = 0;
24        Nstrpx  = 0;
25        Nstrpy  = 0;
26        Nthcali = 0;
27        Nthcal  = 0;
28        Nthnd   = 0;
29        Nthcard = 0;
30    }
31    
32    void GPamela::Delete(){
33    
34        Clear();
35    
36        delete []    Ipltof;  
37        delete []    Ipaddle;
38        delete []    Ipartof;
39        delete []    Xintof;  
40        delete []    Yintof;  
41        delete []    Zintof;  
42        delete []    Xouttof;
43        delete []    Youttof;
44        delete []    Zouttof;
45        delete []    Ereltof;
46        delete []    Timetof;
47        delete []    Pathtof;
48        delete []    P0tof;  
49        delete []    Iparcat;
50        delete []    Icat;  
51        delete []    Xincat;  
52        delete []    Yincat;  
53        delete []    Zincat;  
54        delete []    Xoutcat;
55        delete []    Youtcat;
56        delete []    Zoutcat;
57        delete []    Erelcat;
58        delete []    Timecat;
59        delete []    Pathcat;
60        delete []    P0cat;  
61        delete []    Iparcas;
62        delete []    Icas;  
63        delete []    Xincas;  
64        delete []    Yincas;  
65        delete []    Zincas;  
66        delete []    Xoutcas;
67        delete []    Youtcas;
68        delete []    Zoutcas;
69        delete []    Erelcas;
70        delete []    Timecas;
71        delete []    Pathcas;
72        delete []    P0cas;  
73        delete []    Iparspe;
74        delete []    Itrpb;  
75        delete []    Itrsl;  
76        delete []    Itspa;  
77        delete []    Xinspe;  
78        delete []    Yinspe;  
79        delete []    Zinspe;  
80        delete []    Xoutspe;
81        delete []    Youtspe;
82        delete []    Zoutspe;
83        delete []    Xavspe;  
84        delete []    Yavspe;  
85        delete []    Zavspe;  
86        delete []    Erelspe;
87        delete []    Pathspe;
88        delete []    P0spe;  
89        delete []    Nxmult;  
90        delete []    Nymult;  
91        delete []    Npstripx;
92        delete []    Ntstripx;
93        delete []    Istripx;
94        delete []    Qstripx;
95        delete []    Xstripx;
96        delete []    Npstripy;
97        delete []    Ntstripy;
98        delete []    Istripy;
99        delete []    Qstripy;
100        delete []    Ystripy;
101        delete []    Icaplane;
102        delete []    Icastrip;
103        delete []    Icamod;  
104        delete []    Enestrip;
105        delete []    Icapl;  
106        delete []    Icasi;  
107        delete []    Icast;  
108        delete []    Xincal;  
109        delete []    Yincal;  
110        delete []    Zincal;  
111        delete []    Erelcal;
112        delete []    Itubend;
113        delete []    Iparnd;  
114        delete []    Xinnd;  
115        delete []    Yinnd;  
116        delete []    Zinnd;  
117        delete []    Xoutnd;  
118        delete []    Youtnd;  
119        delete []    Zoutnd;  
120        delete []    Erelnd;  
121        delete []    Timend;  
122        delete []    Pathnd;  
123        delete []    P0nd;  
124        delete []    Iparcard;
125        delete []    Icard;  
126        delete []    Xincard;
127        delete []    Yincard;
128        delete []    Zincard;
129        delete []    Xoutcard;
130        delete []    Youtcard;
131        delete []    Zoutcard;
132        delete []    Erelcard;
133        delete []    Timecard;
134        delete []    Pathcard;
135        delete []    P0card;  
136    
137    
138    };
139    
140    
141    
142    void GPamela::SetBranchAddress( TChain* fhBookTree ){
143    
144    //    cout << "fhBookTree "<<fhBookTree << endl;
145        // prepare tree
146        fhBookTree->SetBranchAddress("Irun",&Irun);
147        fhBookTree->SetBranchAddress("Ievnt",&Ievnt);
148        fhBookTree->SetBranchAddress("Ipa",&Ipa);
149        fhBookTree->SetBranchAddress("X0",&X0);
150        fhBookTree->SetBranchAddress("Y0",&Y0);
151        fhBookTree->SetBranchAddress("Z0",&Z0);
152        fhBookTree->SetBranchAddress("Theta",&Theta);
153        fhBookTree->SetBranchAddress("Phi",&Phi);
154        fhBookTree->SetBranchAddress("P0",&P0);
155        fhBookTree->SetBranchAddress("Nthtof",&Nthtof);
156        fhBookTree->SetBranchAddress("Ipltof",Ipltof);
157        fhBookTree->SetBranchAddress("Ipaddle",Ipaddle);
158        fhBookTree->SetBranchAddress("Ipartof",Ipartof);
159        fhBookTree->SetBranchAddress("Xintof",Xintof);
160        fhBookTree->SetBranchAddress("Yintof",Yintof);
161        fhBookTree->SetBranchAddress("Zintof",Zintof);
162        fhBookTree->SetBranchAddress("Xouttof",Xouttof);
163        fhBookTree->SetBranchAddress("Youttof",Youttof);
164        fhBookTree->SetBranchAddress("Zouttof",Zouttof);
165        fhBookTree->SetBranchAddress("Ereltof",Ereltof);
166        fhBookTree->SetBranchAddress("Timetof",Timetof);
167        fhBookTree->SetBranchAddress("Pathtof",Pathtof);
168        fhBookTree->SetBranchAddress("P0tof",P0tof);
169        fhBookTree->SetBranchAddress("Nthcat",&Nthcat);
170        fhBookTree->SetBranchAddress("Iparcat",Iparcat);
171        fhBookTree->SetBranchAddress("Icat",Icat);
172        fhBookTree->SetBranchAddress("Xincat",Xincat);
173        fhBookTree->SetBranchAddress("Yincat",Yincat);
174        fhBookTree->SetBranchAddress("Zincat",Zincat);
175        fhBookTree->SetBranchAddress("Xoutcat",Xoutcat);
176        fhBookTree->SetBranchAddress("Youtcat",Youtcat);
177        fhBookTree->SetBranchAddress("Zoutcat",Zoutcat);
178        fhBookTree->SetBranchAddress("Erelcat",Erelcat);
179        fhBookTree->SetBranchAddress("Timecat",Timecat);
180        fhBookTree->SetBranchAddress("Pathcat",Pathcat);
181        fhBookTree->SetBranchAddress("P0cat",P0cat);
182        fhBookTree->SetBranchAddress("Nthcas",&Nthcas);
183        fhBookTree->SetBranchAddress("Iparcas",Iparcas);
184        fhBookTree->SetBranchAddress("Icas",Icas);
185        fhBookTree->SetBranchAddress("Xincas",Xincas);
186        fhBookTree->SetBranchAddress("Yincas",Yincas);
187        fhBookTree->SetBranchAddress("Zincas",Zincas);
188        fhBookTree->SetBranchAddress("Xoutcas",Xoutcas);
189        fhBookTree->SetBranchAddress("Youtcas",Youtcas);
190        fhBookTree->SetBranchAddress("Zoutcas",Zoutcas);
191        fhBookTree->SetBranchAddress("Erelcas",Erelcas);
192        fhBookTree->SetBranchAddress("Timecas",Timecas);
193        fhBookTree->SetBranchAddress("Pathcas",Pathcas);
194        fhBookTree->SetBranchAddress("P0cas",P0cas);
195        fhBookTree->SetBranchAddress("Nthspe",&Nthspe);
196        fhBookTree->SetBranchAddress("Iparspe",Iparspe);
197        fhBookTree->SetBranchAddress("Itrpb",Itrpb);
198        fhBookTree->SetBranchAddress("Itrsl",Itrsl);
199        fhBookTree->SetBranchAddress("Itspa",Itspa);
200        fhBookTree->SetBranchAddress("Xinspe",Xinspe);
201        fhBookTree->SetBranchAddress("Yinspe",Yinspe);
202        fhBookTree->SetBranchAddress("Zinspe",Zinspe);
203        fhBookTree->SetBranchAddress("Xoutspe",Xoutspe);
204        fhBookTree->SetBranchAddress("Youtspe",Youtspe);
205        fhBookTree->SetBranchAddress("Zoutspe",Zoutspe);
206        fhBookTree->SetBranchAddress("Xavspe",Xavspe);
207        fhBookTree->SetBranchAddress("Yavspe",Yavspe);
208        fhBookTree->SetBranchAddress("Zavspe",Zavspe);
209        fhBookTree->SetBranchAddress("Erelspe",Erelspe);
210        fhBookTree->SetBranchAddress("Pathspe",Pathspe);
211        fhBookTree->SetBranchAddress("P0spe",P0spe);
212        fhBookTree->SetBranchAddress("Nxmult",Nxmult);
213        fhBookTree->SetBranchAddress("Nymult",Nymult);
214        fhBookTree->SetBranchAddress("Nstrpx",&Nstrpx);
215        fhBookTree->SetBranchAddress("Npstripx",Npstripx);
216        fhBookTree->SetBranchAddress("Ntstripx",Ntstripx);
217        fhBookTree->SetBranchAddress("Istripx",Istripx);
218        fhBookTree->SetBranchAddress("Qstripx",Qstripx);
219        fhBookTree->SetBranchAddress("Xstripx",Xstripx);
220        fhBookTree->SetBranchAddress("Nstrpy",&Nstrpy);
221        fhBookTree->SetBranchAddress("Npstripy",Npstripy);
222        fhBookTree->SetBranchAddress("Ntstripy",Ntstripy);
223        fhBookTree->SetBranchAddress("Istripy",Istripy);
224        fhBookTree->SetBranchAddress("Qstripy",Qstripy);
225        fhBookTree->SetBranchAddress("Ystripy",Ystripy);
226        fhBookTree->SetBranchAddress("Nthcali",&Nthcali);
227        fhBookTree->SetBranchAddress("Icaplane",Icaplane);
228        fhBookTree->SetBranchAddress("Icastrip",Icastrip);
229        fhBookTree->SetBranchAddress("Icamod",Icamod);
230        fhBookTree->SetBranchAddress("Enestrip",Enestrip);
231        fhBookTree->SetBranchAddress("Nthcal",&Nthcal);
232        fhBookTree->SetBranchAddress("Icapl",Icapl);
233        fhBookTree->SetBranchAddress("Icasi",Icasi);
234        fhBookTree->SetBranchAddress("Icast",Icast);
235        fhBookTree->SetBranchAddress("Xincal",Xincal);
236        fhBookTree->SetBranchAddress("Yincal",Yincal);
237        fhBookTree->SetBranchAddress("Zincal",Zincal);
238        fhBookTree->SetBranchAddress("Erelcal",Erelcal);
239        fhBookTree->SetBranchAddress("Nthnd",&Nthnd);
240        fhBookTree->SetBranchAddress("Itubend",Itubend);
241        fhBookTree->SetBranchAddress("Iparnd",Iparnd);
242        fhBookTree->SetBranchAddress("Xinnd",Xinnd);
243        fhBookTree->SetBranchAddress("Yinnd",Yinnd);
244        fhBookTree->SetBranchAddress("Zinnd",Zinnd);
245        fhBookTree->SetBranchAddress("Xoutnd",Xoutnd);
246        fhBookTree->SetBranchAddress("Youtnd",Youtnd);
247        fhBookTree->SetBranchAddress("Zoutnd",Zoutnd);
248        fhBookTree->SetBranchAddress("Erelnd",Erelnd);
249        fhBookTree->SetBranchAddress("Timend",Timend);
250        fhBookTree->SetBranchAddress("Pathnd",Pathnd);
251        fhBookTree->SetBranchAddress("P0nd",P0nd);
252        fhBookTree->SetBranchAddress("Nthcard",&Nthcard);
253        fhBookTree->SetBranchAddress("Iparcard",Iparcard);
254        fhBookTree->SetBranchAddress("Icard",Icard);
255        fhBookTree->SetBranchAddress("Xincard",Xincard);
256        fhBookTree->SetBranchAddress("Yincard",Yincard);
257        fhBookTree->SetBranchAddress("Zincard",Zincard);
258        fhBookTree->SetBranchAddress("Xoutcard",Xoutcard);
259        fhBookTree->SetBranchAddress("Youtcard",Youtcard);
260        fhBookTree->SetBranchAddress("Zoutcard",Zoutcard);
261        fhBookTree->SetBranchAddress("Erelcard",Erelcard);
262        fhBookTree->SetBranchAddress("Timecard",Timecard);
263        fhBookTree->SetBranchAddress("Pathcard",Pathcard);
264        fhBookTree->SetBranchAddress("P0card",P0card);
265    
266    //    fhBookTree->SetBranchStatus("*",0);
267    
268    }
269    
270    ClassImp(GPamela);
271    
272    /////////////////////////////////////////////////////////////////////////////
273    /////////////////////////////////////////////////////////////////////////////
274    /////////////////////////////////////////////////////////////////////////////
275    /////////////////////////////////////////////////////////////////////////////
276  //--------------------------------------  //--------------------------------------
277  //  //
278  //  //
# Line 97  PamLevel2::PamLevel2(){ Line 371  PamLevel2::PamLevel2(){
371  };  };
372    
373  /**  /**
374   * Constructor with given dir, list and detectors   * Constructor
375     * @param ddir Name of directory where level2 files are stored.
376     * @param list Name of an ascii file containing the list of file names
377     * @param detlist Options to chose what to load.
378     * Possible options are:
379     *       +AUTO --> load all trees/branches in the input files
380     *       +(-)ALL --> inlcude(exclude) all trees/branches
381     *       +(-)TRK1+(-)TRK2+(-)CAL1+(-)CAL2+(-)TOF+(-)TRG+(-)ND+(-)S4+(-)ORB+(-)AC --> inlcude(exclude) trees and branches
382     *       +(-)TRK0 --> include(exclude) tracker level0 tree
383     *       +(-)GP --> include exclude GPAMELA output tree
384     * If no options are specified, the default is assumed. Default is:
385     * +TRK2+CAL2+CAL1+TOF+TRG+ND+AC+S4+ORB
386   */   */
387  PamLevel2::PamLevel2(TString ddir,TString list,TString detlist){  PamLevel2::PamLevel2(TString ddir,TString list,TString detlist){
388    Initialize();    Initialize();
# Line 106  PamLevel2::PamLevel2(TString ddir,TStrin Line 391  PamLevel2::PamLevel2(TString ddir,TStrin
391  };  };
392    
393  /**  /**
394   * Constructor with given dir and list   * Constructor
395     * @param ddir Name of directory where level2 files are stored.
396     * @param list Name of an ascii file containing the list of file names
397     * Default trees/branches are loaded. Default is:
398     * +TRK2+CAL2+CAL1+TOF+TRG+ND+AC+S4+ORB
399   */   */
400  PamLevel2::PamLevel2(TString ddir,TString list){  PamLevel2::PamLevel2(TString ddir,TString list){
401    Initialize();    Initialize();
# Line 132  void PamLevel2::Initialize(){ Line 421  void PamLevel2::Initialize(){
421      nd_obj    = 0;      nd_obj    = 0;
422      ac_obj    = 0;      ac_obj    = 0;
423      orb_obj   = 0;      orb_obj   = 0;
424        gp_obj    = 0;
425    
426      run_obj   = 0;//new GL_RUN();      run_obj   = 0;//new GL_RUN();
427      soft_obj   = 0;// Emiliano      soft_obj   = 0;// Emiliano
# Line 181  void PamLevel2::Initialize(){ Line 471  void PamLevel2::Initialize(){
471      CAL2 = true;      CAL2 = true;
472      TRK2 = true;      TRK2 = true;
473      TRK1 = false;      TRK1 = false;
474      TRKh = false;      TRK0 = false;
475      TRKh = false;      TRKh = false;
476      TRG  = true;      TRG  = true;
477      TOF  = true;      TOF  = true;
# Line 189  void PamLevel2::Initialize(){ Line 479  void PamLevel2::Initialize(){
479      S4   = true;      S4   = true;
480      ND   = true;      ND   = true;
481      AC   = true;      AC   = true;
482      ORB  = true;      ORB  = true;    
483            GP   = false;
484    
485      RUN  = true;      RUN  = true;
486    
487      SELLI = -1;      SELLI = -1;
# Line 228  void PamLevel2::Delete(){ Line 519  void PamLevel2::Delete(){
519      if(nd_obj)   delete nd_obj;      if(nd_obj)   delete nd_obj;
520      if(ac_obj)   delete ac_obj;      if(ac_obj)   delete ac_obj;
521      if(orb_obj)  delete orb_obj;      if(orb_obj)  delete orb_obj;
522        if(gp_obj)   delete gp_obj;
523            
524      if(tsorted){      if(tsorted){
525          tsorted->Delete();          tsorted->Delete();
# Line 315  void PamLevel2::Clear(){ Line 607  void PamLevel2::Clear(){
607      if(nd_obj)   nd_obj->Clear();      if(nd_obj)   nd_obj->Clear();
608      if(ac_obj)   ac_obj->Clear();      if(ac_obj)   ac_obj->Clear();
609      if(orb_obj)  orb_obj->Clear();      if(orb_obj)  orb_obj->Clear();
610        if(gp_obj)   gp_obj->Clear();
611            
612  //    if(sorted_tracks)sorted_tracks->Clear();  //    if(sorted_tracks)sorted_tracks->Clear();
613  //    sorted_tracks.Clear();  //    sorted_tracks.Clear();
# Line 391  void PamLevel2::Reset(){ Line 684  void PamLevel2::Reset(){
684    nd_obj    = 0;    nd_obj    = 0;
685    ac_obj    = 0;    ac_obj    = 0;
686    orb_obj   = 0;    orb_obj   = 0;
687      gp_obj    = 0;
688    //    //
689    // Reset run pointers    // Reset run pointers
690    //    //
# Line 482  void *PamLevel2::GetPointerTo(const char Line 776  void *PamLevel2::GetPointerTo(const char
776          if(!orb_obj)   orb_obj   = new OrbitalInfo();          if(!orb_obj)   orb_obj   = new OrbitalInfo();
777          return &orb_obj;          return &orb_obj;
778      };      };
779        if(!objname.CompareTo("GPamela")){
780            if(!gp_obj)   gp_obj   = new GPamela();
781            return &gp_obj;
782        };
783            
784      if(!objname.CompareTo("RunInfo"))return &run_obj;      if(!objname.CompareTo("RunInfo"))return &run_obj;
785    
# Line 1244  PamTrack *PamLevel2::GetTrackImage(int i Line 1542  PamTrack *PamLevel2::GetTrackImage(int i
1542   */   */
1543  TTree *PamLevel2::GetPamTree(TFile *f, TString detlist ){  TTree *PamLevel2::GetPamTree(TFile *f, TString detlist ){
1544    
1545  //     if( !detlist.IsNull() ) SetWhichTrees(detlist);      if( detlist.Contains("+AUTO", TString::kIgnoreCase) ) {
1546  //     else                    GetWhichTrees(f);          cout << "+AUTO"<<endl;
1547    if ( pam_tree ){          GetWhichTrees(f);
1548      printf("WARNING: TTree *PamLevel2::GetPamTree(TFile *fl, TString detlist) -- pam_tree already exists!\n ");      };
1549      return pam_tree;      SetWhichTrees(detlist);
1550    };  
1551        if ( pam_tree ){
1552            printf("WARNING: TTree *PamLevel2::GetPamTree(TFile *fl, TString detlist) -- pam_tree already exists!\n ");
1553            return pam_tree;
1554        };
1555    //    //
1556    
1557      cout << "TTree *PamLevel2::GetPamTree(TFile *f, TString detlist ) -- obsolte "<<endl;      cout << "TTree *PamLevel2::GetPamTree(TFile *f, TString detlist ) -- obsolte "<<endl;
1558    
1559      SetWhichTrees(detlist);  //    SetWhichTrees(detlist);
1560    
1561      TTree *Trout =0;      TTree *Trout =0;
1562    
# Line 1275  TTree *PamLevel2::GetPamTree(TFile *f, T Line 1577  TTree *PamLevel2::GetPamTree(TFile *f, T
1577      if(ND)cout<<"ND ";      if(ND)cout<<"ND ";
1578      if(S4)cout<<"S4 ";      if(S4)cout<<"S4 ";
1579      if(ORB)cout<<"ORB ";      if(ORB)cout<<"ORB ";
1580        if(GP)cout<<"GP ";
1581      cout << endl;      cout << endl;
1582      if(SELLI)cout<<">>> Found selection-list <<<"<<endl;      if(SELLI)cout<<">>> Found selection-list <<<"<<endl;
1583    
# Line 1373  TTree *PamLevel2::GetPamTree(TFile *f, T Line 1676  TTree *PamLevel2::GetPamTree(TFile *f, T
1676          cout << "OrbitalInfo  : missing tree"<<endl;          cout << "OrbitalInfo  : missing tree"<<endl;
1677      };      };
1678    
1679        // GPamela
1680        TTree *G = (TTree*)f->Get("h20");
1681        if(G && GP) {
1682            if(!gp_obj)gp_obj=new GPamela();
1683    //      ------------------------------------
1684    //      ATTENZIONE!!!
1685    //      non so per quale arcano motivo,
1686    //      per l'albero di gpamela il branch address lo devo settare
1687    //      DOPO aver fatto friend
1688    //      FGRRRVZZZZUTSALKJMSLKJ!!!
1689    //      ------------------------------------
1690    //      gp_obj->SetBranchAddress(G); //ho dovuto fare in maniera diversa dagli altri
1691    //      cout << "h20          : set branch address GPamela "<<endl;
1692            if(!Trout)Trout=G;
1693            else Trout->AddFriend(G);
1694        }else{
1695    //      cout << "h20          : missing tree"<<endl;
1696        };
1697    
1698    
1699      TTree *L = (TTree*)f->Get("SelectionList");      TTree *L = (TTree*)f->Get("SelectionList");
1700      if(L && SELLI==1) {      if(L && SELLI==1) {
1701  //      L->SetBranchAddress("RunEntry",&irun);  //      L->SetBranchAddress("RunEntry",&irun);
# Line 1389  TTree *PamLevel2::GetPamTree(TFile *f, T Line 1712  TTree *PamLevel2::GetPamTree(TFile *f, T
1712            
1713      cout<<endl<<" Number of entries: "<<Trout->GetEntries()<<endl<<endl;      cout<<endl<<" Number of entries: "<<Trout->GetEntries()<<endl<<endl;
1714    
1715    //      ------------------------------------
1716    //      ATTENZIONE!!!
1717    //      non so per quale arcano motivo,
1718    //      per l'albero di gpamela il branch address lo devo settare
1719    //      DOPO aver fatto friend
1720    //      FGRRRVZZZZUTSALKJMSLKJ!!!
1721    //      ------------------------------------
1722        if(G && GP) {      
1723            gp_obj->SetBranchAddress(Trout); //ho dovuto fare in maniera diversa dagli altri
1724            cout << "h20          : set branch address GPamela "<<endl;
1725        }else{
1726            cout << "h20          : missing tree"<<endl;
1727        };
1728    
1729      pam_tree = (TChain*)Trout;      pam_tree = (TChain*)Trout;
1730            
1731      return Trout;      return Trout;
# Line 1539  TList*  PamLevel2::GetListOfLevel2Files( Line 1876  TList*  PamLevel2::GetListOfLevel2Files(
1876   * @return Pointer to a TChain   * @return Pointer to a TChain
1877   */   */
1878  TChain *PamLevel2::GetPamTree(TList *fl, TString detlist ){  TChain *PamLevel2::GetPamTree(TList *fl, TString detlist ){
1879    //      //
1880    //      //
1881    //      //
1882    if ( pam_tree ){      if ( pam_tree ){
1883      printf("WARNING: TChain *PamLevel2::GetPamTree(TList *fl, TString detlist) -- pam_tree already exists!\n ");          printf("WARNING: TChain *PamLevel2::GetPamTree(TList *fl, TString detlist) -- pam_tree already exists!\n ");
1884      return pam_tree;          return pam_tree;
1885    };      };
1886    //      //
1887            
1888      TChain *Trout =0;      TChain *Trout =0;
1889    
 //    if( !detlist.IsNull() )SetWhichTrees(detlist);  
     SetWhichTrees(detlist);  
1890            
1891      cout<< "GetPamTree(TList*,TString): input detector list --> ";      if( detlist.Contains("+AUTO", TString::kIgnoreCase) ) {
1892      if(TRK1)cout<<"TRK1 ";          if( fl->GetEntries()>0 ){
1893      if(TRK2)cout<<"TRK2 ";              cout << "+AUTO"<<endl;
1894      if(TRKh)cout<<"TRKH ";              TFile *fprimo = new TFile( fl->At(0)->GetName() );
1895      if(CAL1)cout<<"CAL1 ";              GetWhichTrees(fprimo);
1896      if(CAL2)cout<<"CAL2 ";              fprimo->Delete();
1897      if(TOF)cout<<"TOF ";          }
1898      if(TRG)cout<<"TRG ";      };
1899      if(AC)cout<<"AC ";      SetWhichTrees(detlist);    
1900      if(ND)cout<<"ND ";  
1901      if(S4)cout<<"S4 ";  
     if(ORB)cout<<"ORB ";  
     cout << endl;  
1902    
1903    //    if( !detlist.IsNull() )SetWhichTrees(detlist);
1904    //    
1905       TChain *T = 0;           TChain *T = 0;    
1906       TChain *C = 0;       TChain *C = 0;
1907       TChain *O = 0;       TChain *O = 0;
# Line 1575  TChain *PamLevel2::GetPamTree(TList *fl, Line 1910  TChain *PamLevel2::GetPamTree(TList *fl,
1910       TChain *N = 0;       TChain *N = 0;
1911       TChain *A = 0;       TChain *A = 0;
1912       TChain *B = 0;       TChain *B = 0;
1913         TChain *G = 0;
1914    
1915       TChain *L = 0;       TChain *L = 0;
1916            
# Line 1586  TChain *PamLevel2::GetPamTree(TList *fl, Line 1922  TChain *PamLevel2::GetPamTree(TList *fl,
1922      if(ND)               N = new TChain("NeutronD");      if(ND)               N = new TChain("NeutronD");
1923      if(AC)               A = new TChain("Anticounter");      if(AC)               A = new TChain("Anticounter");
1924      if(ORB)              B = new TChain("OrbitalInfo");      if(ORB)              B = new TChain("OrbitalInfo");
1925       L = new TChain("SelectionList");      if(GP)               G = new TChain("h20");
1926        L = new TChain("SelectionList");
1927            
1928      // loop over files and create chains              // loop over files and create chains        
1929      TIter next(fl);      TIter next(fl);
# Line 1603  TChain *PamLevel2::GetPamTree(TList *fl, Line 1940  TChain *PamLevel2::GetPamTree(TList *fl,
1940              if(ND)               N->Add(name);              if(ND)               N->Add(name);
1941              if(AC)               A->Add(name);              if(AC)               A->Add(name);
1942              if(ORB)              B->Add(name);              if(ORB)              B->Add(name);
1943                if(GP)               G->Add(name);
1944              if(SELLI==1)         L->Add(name);              if(SELLI==1)         L->Add(name);
1945          };          };
1946      };      };
# Line 1613  TChain *PamLevel2::GetPamTree(TList *fl, Line 1951  TChain *PamLevel2::GetPamTree(TList *fl,
1951  //    UInt_t *found=0;  //    UInt_t *found=0;
1952  // Tracker  // Tracker
1953      if(T && (TRK2||TRK1||TRKh)) {      if(T && (TRK2||TRK1||TRKh)) {
1954          if(TRK2)T->SetBranchAddress("TrkLevel2", GetPointerTo("TrkLevel2"));  //      if(TRK2)T->SetBranchAddress("TrkLevel2", GetPointerTo("TrkLevel2"));
1955  //      else    T->SetBranchStatus("TrkLevel2",0,found);  //      if(TRK2)cout << "Tracker      : set branch address TrkLevel2"<<endl;
1956          if(TRK2)cout << "Tracker      : set branch address TrkLevel2"<<endl;  //      if(TRK1)T->SetBranchAddress("TrkLevel1", GetPointerTo("TrkLevel1"));
1957          if(TRK1)T->SetBranchAddress("TrkLevel1", GetPointerTo("TrkLevel1"));  //      if(TRK1)cout << "Tracker      : set branch address TrkLevel1"<<endl;
1958  //      else    T->SetBranchStatus("TrkLevel1",0,found);  //      if(TRKh)T->SetBranchAddress("TrkHough", GetPointerTo("TrkHough"));
1959          if(TRK1)cout << "Tracker      : set branch address TrkLevel1"<<endl;  //      if(TRKh)cout << "Tracker      : set branch address TrkHough"<<endl;
         if(TRKh)T->SetBranchAddress("TrkHough", GetPointerTo("TrkHough"));  
 //      else    T->SetBranchStatus("TrkHough",0,found);  
         if(TRKh)cout << "Tracker      : set branch address TrkHough"<<endl;  
1960          if(!Trout)Trout=T;          if(!Trout)Trout=T;
1961          else Trout->AddFriend("Tracker");          else Trout->AddFriend("Tracker");
1962      }else{      }else{
1963          cout << "Tracker      : missing tree"<<endl;  //        cout << "Tracker      : missing tree"<<endl;
1964      };      };
1965      // Calorimeter      // Calorimeter
1966      if(C && (CAL2||CAL1)) {      if(C && (CAL2||CAL1)) {
1967          if(CAL2)C->SetBranchAddress("CaloLevel2", GetPointerTo("CaloLevel2"));  //        if(CAL2)C->SetBranchAddress("CaloLevel2", GetPointerTo("CaloLevel2"));
1968  //      else    C->SetBranchStatus("CaloLevel2",0,found);  //        if(CAL2)cout << "Calorimeter  : set branch address CaloLevel2"<<endl;
1969          if(CAL2)cout << "Calorimeter  : set branch address CaloLevel2"<<endl;  //        if(CAL1)C->SetBranchAddress("CaloLevel1", GetPointerTo("CaloLevel1"));
1970          if(CAL1)C->SetBranchAddress("CaloLevel1", GetPointerTo("CaloLevel1"));  //        if(CAL1)cout << "Calorimeter  : set branch address CaloLevel1"<<endl;
 //      else    C->SetBranchStatus("CaloLevel1",0,found);  
         if(CAL1)cout << "Calorimeter  : set branch address CaloLevel1"<<endl;  
1971          if(!Trout)Trout=C;          if(!Trout)Trout=C;
1972          else Trout->AddFriend("Calorimeter");          else Trout->AddFriend("Calorimeter");
1973      }else{      }else{
1974          cout << "Calorimeter  : missing tree"<<endl;  //        cout << "Calorimeter  : missing tree"<<endl;
1975      };      };
1976      // ToF          // ToF    
1977      if(O && TOF) {      if(O && TOF) {
1978          O->SetBranchAddress("ToFLevel2", GetPointerTo("ToFLevel2"));  //        O->SetBranchAddress("ToFLevel2", GetPointerTo("ToFLevel2"));
1979          cout << "ToF          : set branch address ToFLevel2"<<endl;  //        cout << "ToF          : set branch address ToFLevel2"<<endl;
1980          if(!Trout)Trout=O;          if(!Trout)Trout=O;
1981          else Trout->AddFriend("ToF");          else Trout->AddFriend("ToF");
1982      }else{      }else{
1983          cout << "ToF         : missing tree"<<endl;  //        cout << "ToF         : missing tree"<<endl;
1984      };      };
1985      // Trigger      // Trigger
1986      if(R && TRG) {      if(R && TRG) {
1987          R->SetBranchAddress("TrigLevel2", GetPointerTo("TrigLevel2"));  //        R->SetBranchAddress("TrigLevel2", GetPointerTo("TrigLevel2"));
1988          cout << "Trigger      : set branch address TrigLevel2"<<endl;  //        cout << "Trigger      : set branch address TrigLevel2"<<endl;
1989          if(!Trout)Trout=O;          if(!Trout)Trout=O;
1990          else Trout->AddFriend("Trigger");          else Trout->AddFriend("Trigger");
1991      }else{      }else{
1992          cout << "Trigger      : missing tree"<<endl;  //        cout << "Trigger      : missing tree"<<endl;
1993      };      };
1994      // S4      // S4
1995      if(S && S4) {      if(S && S4) {
1996          S->SetBranchAddress("S4Level2", GetPointerTo("S4Level2"));  //        S->SetBranchAddress("S4Level2", GetPointerTo("S4Level2"));
1997          cout << "S4           : set branch address S4Level2"<<endl;  //        cout << "S4           : set branch address S4Level2"<<endl;
1998          if(!Trout)Trout=O;          if(!Trout)Trout=O;
1999          else Trout->AddFriend("S4");          else Trout->AddFriend("S4");
2000      }else{      }else{
2001          cout << "S4           : missing tree"<<endl;  //        cout << "S4           : missing tree"<<endl;
2002      };      };
2003      // Neutron Detector      // Neutron Detector
2004      if(N && ND) {      if(N && ND) {
2005          N->SetBranchAddress("NDLevel2", GetPointerTo("NDLevel2"));  //        N->SetBranchAddress("NDLevel2", GetPointerTo("NDLevel2"));
2006          cout << "NeutronD     : set branch address NDLevel2"<<endl;  //        cout << "NeutronD     : set branch address NDLevel2"<<endl;
2007          if(!Trout)Trout=O;          if(!Trout)Trout=O;
2008          else Trout->AddFriend("NeutronD");          else Trout->AddFriend("NeutronD");
2009      }else{      }else{
2010          cout << "NeutronD     : missing tree"<<endl;  //        cout << "NeutronD     : missing tree"<<endl;
2011      };      };
2012      // Anticounters      // Anticounters
2013      if(A && AC) {      if(A && AC) {
2014          A->SetBranchAddress("AcLevel2", GetPointerTo("AcLevel2"));  //        A->SetBranchAddress("AcLevel2", GetPointerTo("AcLevel2"));
2015          cout << "Anticounter  : set branch address AcLevel2"<<endl;  //        cout << "Anticounter  : set branch address AcLevel2"<<endl;
2016          if(!Trout)Trout=O;          if(!Trout)Trout=O;
2017          else Trout->AddFriend("Anticounter");          else Trout->AddFriend("Anticounter");
2018      }else{      }else{
2019          cout << "Anticounter  : missing tree"<<endl;  //        cout << "Anticounter  : missing tree"<<endl;
2020      };      };
2021      // Orbital Info      // Orbital Info
2022      if(B && ORB) {      if(B && ORB) {
2023          B->SetBranchAddress("OrbitalInfo", GetPointerTo("OrbitalInfo"));  //      B->SetBranchAddress("OrbitalInfo", GetPointerTo("OrbitalInfo"));
2024          cout << "OrbitalInfo  : set branch address OrbitalInfo"<<endl;  //      cout << "OrbitalInfo  : set branch address OrbitalInfo"<<endl;
2025          if(!Trout)Trout=O;          if(!Trout)Trout=O;
2026          else Trout->AddFriend("OrbitalInfo");          else Trout->AddFriend("OrbitalInfo");
2027      }else{      }else{
2028          cout << "OrbitalInfo  : missing tree"<<endl;  //      cout << "OrbitalInfo  : missing tree"<<endl;
2029      };      };
2030        // GPamela
2031        if(G && GP) {
2032            if(!gp_obj)gp_obj = new GPamela();
2033    //      ------------------------------------
2034    //      ATTENZIONE!!!
2035    //      non so per quale arcano motivo,
2036    //      per l'albero di gpamela il branch address lo devo settare
2037    //      DOPO aver fatto friend
2038    //      FGRRRVZZZZUTSALKJMSLKJ!!!
2039    //      ------------------------------------
2040    //      gp_obj->SetBranchAddress(G); //ho dovuto fare in maniera diversa dagli altri
2041    //      cout << "h20          : set branch address GPamela "<<endl;
2042            if(!Trout)Trout=G;
2043            else Trout->AddFriend("h20");
2044        }else{
2045    //      cout << "h20          : missing tree"<<endl;
2046        };
2047    
2048    //  =====================================
2049    //  SET BRANCH-ADDRESS AFTER CHAIN+FRIEND
2050    //  =====================================
2051        SetBranchAddress(Trout);
2052    
2053      cout << "+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+" <<endl;      cout << "+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+" <<endl;
2054    
2055      // Selection List      // Selection List
# Line 1714  TChain *PamLevel2::GetPamTree(TList *fl, Line 2070  TChain *PamLevel2::GetPamTree(TList *fl,
2070            
2071  //    cout<<endl<<" Number of entries: "<<Trout->GetEntries()<<endl<<endl;  //    cout<<endl<<" Number of entries: "<<Trout->GetEntries()<<endl<<endl;
2072    
2073      pam_tree = Trout;  //      ------------------------------------
2074    //      ATTENZIONE!!!
2075    //      non so per quale arcano motivo,
2076    //      per l'albero di gpamela il branch address lo devo settare
2077    //      DOPO aver fatto friend
2078    //      FGRRRVZZZZUTSALKJMSLKJ!!!
2079    //      ------------------------------------
2080    //     cout << G << " --- "<<GP <<endl;
2081    //     if(G && GP) {    
2082    //      gp_obj->SetBranchAddress(Trout); //ho dovuto fare in maniera diversa dagli altri
2083    //      cout << "h20          : set branch address GPamela "<<endl;
2084    //     }else{
2085    //      cout << "h20          : missing tree"<<endl;
2086    //     };
2087    
2088    
2089        pam_tree = Trout;
2090        
2091      return Trout;      return Trout;
2092  }  }
2093    
# Line 1741  void PamLevel2::SetBranchAddress(TTree * Line 2113  void PamLevel2::SetBranchAddress(TTree *
2113      ND     = ND  & t->GetBranchStatus("NDLevel2");      ND     = ND  & t->GetBranchStatus("NDLevel2");
2114      AC     = AC  & t->GetBranchStatus("AcLevel2");      AC     = AC  & t->GetBranchStatus("AcLevel2");
2115      ORB    = ORB & t->GetBranchStatus("OrbitalInfo");      ORB    = ORB & t->GetBranchStatus("OrbitalInfo");
2116        GP     = GP  & t->GetBranchStatus("h20");
2117    
2118    
2119      // Tracker      // Tracker
# Line 1797  void PamLevel2::SetBranchAddress(TTree * Line 2170  void PamLevel2::SetBranchAddress(TTree *
2170          t->SetBranchAddress("OrbitalInfo", GetPointerTo("OrbitalInfo"));          t->SetBranchAddress("OrbitalInfo", GetPointerTo("OrbitalInfo"));
2171          cout << "OrbitalInfo  : set branch address OrbitalInfo"<<endl;          cout << "OrbitalInfo  : set branch address OrbitalInfo"<<endl;
2172      };      };
2173        // GPamela
2174        if(GP) {
2175    //      GetPointerTo("GPamela");
2176            if(!gp_obj)gp_obj = new GPamela();
2177            gp_obj->SetBranchAddress(t); //ho dovuto fare in maniera diversa dagli altri
2178            cout << "h20          : set branch address GPamela "<<endl;
2179        };
2180      // SelectionList      // SelectionList
2181      if(SELLI==1) {      if(SELLI==1) {
2182          t->SetBranchAddress("RunEntry", &irun);          t->SetBranchAddress("RunEntry", &irun);
# Line 1811  void PamLevel2::SetBranchAddress(TTree * Line 2191  void PamLevel2::SetBranchAddress(TTree *
2191   */   */
2192  void PamLevel2::SetBranchAddress(TChain *t){  void PamLevel2::SetBranchAddress(TChain *t){
2193    
2194      TRK2    = TRK2 & t->GetBranchStatus("TrkLevel2");  //     TRK2    = TRK2 & t->GetBranchStatus("TrkLevel2");
2195      TRK1    = TRK1 & t->GetBranchStatus("TrkLevel1");  //     TRK1    = TRK1 & t->GetBranchStatus("TrkLevel1");
2196      TRKh    = TRKh & t->GetBranchStatus("TrkHough");  //     TRKh    = TRKh & t->GetBranchStatus("TrkHough");
2197      CAL1    = CAL1 & t->GetBranchStatus("CaloLevel1");  //     CAL1    = CAL1 & t->GetBranchStatus("CaloLevel1");
2198      CAL2    = CAL2 & t->GetBranchStatus("CaloLevel2");  //     CAL2    = CAL2 & t->GetBranchStatus("CaloLevel2");
2199      TOF    = TOF & t->GetBranchStatus("ToFLevel2");  //     TOF    = TOF & t->GetBranchStatus("ToFLevel2");
2200      TRG    = TRG & t->GetBranchStatus("TrigLevel2");  //     TRG    = TRG & t->GetBranchStatus("TrigLevel2");
2201      S4     = S4  & t->GetBranchStatus("S4Level2");  //     S4     = S4  & t->GetBranchStatus("S4Level2");
2202      ND     = ND  & t->GetBranchStatus("NDLevel2");  //     ND     = ND  & t->GetBranchStatus("NDLevel2");
2203      AC     = AC  & t->GetBranchStatus("AcLevel2");  //     AC     = AC  & t->GetBranchStatus("AcLevel2");
2204      ORB    = ORB & t->GetBranchStatus("OrbitalInfo");  //     ORB    = ORB & t->GetBranchStatus("OrbitalInfo");
2205    //    GP     = GP & t->GetBranchStatus("h20");
2206    
2207      // Tracker      // Tracker
2208       if(TRK2) {       if(TRK2) {
# Line 1877  void PamLevel2::SetBranchAddress(TChain Line 2258  void PamLevel2::SetBranchAddress(TChain
2258          t->SetBranchAddress("OrbitalInfo", GetPointerTo("OrbitalInfo"));          t->SetBranchAddress("OrbitalInfo", GetPointerTo("OrbitalInfo"));
2259          cout << "OrbitalInfo  : set branch address OrbitalInfo"<<endl;          cout << "OrbitalInfo  : set branch address OrbitalInfo"<<endl;
2260      };      };
2261        // GPamela
2262    //    cout <<"GP "<<GP<<endl;
2263        if(GP) {
2264    //      GetPointerTo("GPamela");
2265            if(!gp_obj)gp_obj = new GPamela();
2266            gp_obj->SetBranchAddress(t); //ho dovuto fare in maniera diversa dagli altri
2267            cout << "h20          : set branch address GPamela "<<endl;
2268        };
2269      // SelectionList      // SelectionList
2270      if(SELLI==1) {      if(SELLI==1) {
2271          t->SetBranchAddress("RunEntry", &irun);          t->SetBranchAddress("RunEntry", &irun);
# Line 2384  Bool_t PamLevel2::UpdateRunInfo(TTree *r Line 2773  Bool_t PamLevel2::UpdateRunInfo(TTree *r
2773   * @param detlist TString containing the sequence of trees required   * @param detlist TString containing the sequence of trees required
2774  */  */
2775  void PamLevel2::SetWhichTrees(TString detlist){  void PamLevel2::SetWhichTrees(TString detlist){
2776                
2777      if(detlist.IsNull() || detlist.Contains("+ALL", TString::kIgnoreCase)){  //    if(detlist.IsNull() || detlist.Contains("+ALL", TString::kIgnoreCase)){
2778          CAL0 = false;      if( detlist.Contains("+ALL", TString::kIgnoreCase)){
2779    
2780            cout << " ======================================================== "<<endl;
2781            cout << "                       (( WARNING ))                      "<< endl;
2782            cout << " The meaning of the option +ALL has changed!!             "<<endl;
2783            cout << " Now it includes really all (level0+level1+level2+gpamela)"<<endl;
2784            cout << " and the file is discarded if it does not contain all     "<<endl;
2785            cout << " trees or level0 files are not available!!                "<<endl;
2786            cout << " ======================================================== "<<endl;
2787                
2788            CAL0 = true;
2789          CAL1 = true;          CAL1 = true;
2790          CAL2 = true;          CAL2 = true;
2791          TRK2 = true;          TRK2 = true;
2792          TRK1 = false;          TRK1 = true;
2793          TRKh = false;          TRKh = true;
2794          TRK0 = false;          TRK0 = true;
2795          TRG = true;          TRG = true;
2796          TOF = true;          TOF = true;
2797          TOF0 = false;          TOF0 = true;
2798          S4  = true;          S4  = true;
2799          ND  = true;          ND  = true;
2800          AC  = true;          AC  = true;
2801          ORB = true;          ORB = true;
2802            GP  = true;
2803      }else if( detlist.Contains("-ALL", TString::kIgnoreCase) ){      }else if( detlist.Contains("-ALL", TString::kIgnoreCase) ){
2804          CAL0 = false;          CAL0 = false;
2805          CAL1 = false;          CAL1 = false;
# Line 2415  void PamLevel2::SetWhichTrees(TString de Line 2815  void PamLevel2::SetWhichTrees(TString de
2815          ND  = false;          ND  = false;
2816          AC  = false;          AC  = false;
2817          ORB = false;          ORB = false;
2818            GP  = false;
2819      };      };
2820            
2821  //  -------------------------------------------------------------------------  //  -------------------------------------------------------------------------
# Line 2488  void PamLevel2::SetWhichTrees(TString de Line 2889  void PamLevel2::SetWhichTrees(TString de
2889      if( detlist.Contains("-ORB", TString::kIgnoreCase) )ORB = false;      if( detlist.Contains("-ORB", TString::kIgnoreCase) )ORB = false;
2890      else if( detlist.Contains("+ORB", TString::kIgnoreCase) )ORB = true;      else if( detlist.Contains("+ORB", TString::kIgnoreCase) )ORB = true;
2891    
2892        if( detlist.Contains("-GP", TString::kIgnoreCase) )GP = false;
2893        else if( detlist.Contains("+GP", TString::kIgnoreCase) )GP = true;
2894    
2895        cout<< "Set detector list from input --> ";
2896        if(TRK0)cout<<"TRK0 ";
2897        if(TRK1)cout<<"TRK1 ";
2898        if(TRK2)cout<<"TRK2 ";
2899        if(TRKh)cout<<"TRKH ";
2900        if(CAL0)cout<<"CAL0 ";
2901        if(CAL1)cout<<"CAL1 ";
2902        if(CAL2)cout<<"CAL2 ";
2903        if(TOF)cout<<"TOF ";
2904        if(TRG)cout<<"TRG ";
2905        if(AC)cout<<"AC ";
2906        if(ND)cout<<"ND ";
2907        if(S4)cout<<"S4 ";
2908        if(ORB)cout<<"ORB ";
2909        if(GP)cout<<"GP ";
2910        cout << endl;
2911  //     cout<< "Set detector list --> ";  //     cout<< "Set detector list --> ";
2912  //     if(TRK1)cout<<"TRK1 ";  //     if(TRK1)cout<<"TRK1 ";
2913  //     if(TRK2)cout<<"TRK2 ";  //     if(TRK2)cout<<"TRK2 ";
2914  //     if(TRKh)cout<<"TRKH ";  //     if(TRKh)cout<<"TRKH ";
2915  //     if(CAL1)cout<<"CAL1 ";  //     if(CAL1)cout<<"CAL1 ";
2916  //     if(CAL2)cout<<"CAL2 ";  //     if(CAL2)cout<<"CAL2 ";
2917    //     if(TOF0)cout<<"TOF0 ";
2918  //     if(TOF)cout<<"TOF ";  //     if(TOF)cout<<"TOF ";
2919  //     if(TRG)cout<<"TRG ";  //     if(TRG)cout<<"TRG ";
2920  //     if(AC)cout<<"AC ";  //     if(AC)cout<<"AC ";
# Line 2512  void  PamLevel2::GetWhichTrees(TFile* f) Line 2933  void  PamLevel2::GetWhichTrees(TFile* f)
2933            
2934    
2935    
2936      cout << "void  PamLevel2::GetWhichTrees(TFile* f) --- WARNING!! --- ...potrebbe non funzionare "<<endl;  //    cout << "void  PamLevel2::GetWhichTrees(TFile* f) --- WARNING!! --- ...potrebbe non funzionare "<<endl;
2937      // -----------      // -----------
2938      // reset flags      // reset flags
2939      // -----------      // -----------
# Line 2527  void  PamLevel2::GetWhichTrees(TFile* f) Line 2948  void  PamLevel2::GetWhichTrees(TFile* f)
2948      ND     = false;          ND     = false;    
2949      AC     = false;          AC     = false;    
2950      ORB    = false;          ORB    = false;    
2951        GP     = false;    
2952            
2953      RUN    = false;      RUN    = false;
2954                    
# Line 2617  void  PamLevel2::GetWhichTrees(TFile* f) Line 3039  void  PamLevel2::GetWhichTrees(TFile* f)
3039                  TRK2 = false;                  TRK2 = false;
3040                  TRKh = false;                  TRKh = false;
3041              }else nev=nevt;              }else nev=nevt;
3042              T->Delete();  //          T->Delete();
3043          };          };
3044          //=========================================================            //=========================================================  
3045          if( !strcmp(key->GetName(),"Calorimeter"    ) ){          if( !strcmp(key->GetName(),"Calorimeter"    ) ){
# Line 2633  void  PamLevel2::GetWhichTrees(TFile* f) Line 3055  void  PamLevel2::GetWhichTrees(TFile* f)
3055                  CAL1 = false;                  CAL1 = false;
3056                  CAL2 = false;                  CAL2 = false;
3057              }else nev=nevt;              }else nev=nevt;
3058              T->Delete();  //          T->Delete();
3059          };                };      
3060            //=========================================================  
3061            if( !strcmp(key->GetName(),"h20") ){
3062                GP = true;
3063                Int_t nevt = ((TTree*)f->Get("h20"))->GetEntries();
3064                if( nev && nevt!=nev){
3065                    cout << "File: "<< f->GetName() <<" h20 tree has "<<nevt<<" events instead of "<<nev<< endl;
3066                    GP = false;
3067                }else nev=nevt;
3068            }
3069    
3070      };      };
3071            
3072      delete lk;  //    delete lk;
3073    
3074  //     cout<< "Get detector list from input file --> ";      cout<< "Get detector list from input file --> ";
3075  //     if(TRK1)cout<<"TRK1 ";      if(TRK1)cout<<"TRK1 ";
3076  //     if(TRK2)cout<<"TRK2 ";      if(TRK2)cout<<"TRK2 ";
3077  //     if(TRKh)cout<<"TRKH ";      if(TRKh)cout<<"TRKH ";
3078  //     if(CAL1)cout<<"CAL1 ";      if(CAL1)cout<<"CAL1 ";
3079  //     if(CAL2)cout<<"CAL2 ";      if(CAL2)cout<<"CAL2 ";
3080  //     if(TOF)cout<<"TOF ";      if(TOF)cout<<"TOF ";
3081  //     if(TRG)cout<<"TRG ";      if(TRG)cout<<"TRG ";
3082  //     if(AC)cout<<"AC ";      if(AC)cout<<"AC ";
3083  //     if(ND)cout<<"ND ";      if(ND)cout<<"ND ";
3084  //     if(S4)cout<<"S4 ";      if(S4)cout<<"S4 ";
3085  //     if(ORB)cout<<"ORB ";      if(ORB)cout<<"ORB ";
3086  //     cout << endl;      if(GP)cout<<"GP ";
3087        cout << endl;
3088                
3089      return ;      return ;
3090                    
# Line 2681  Bool_t  PamLevel2::CheckLevel2File(TStri Line 3113  Bool_t  PamLevel2::CheckLevel2File(TStri
3113      Bool_t ND__ok     = false;          Bool_t ND__ok     = false;    
3114      Bool_t AC__ok     = false;          Bool_t AC__ok     = false;    
3115      Bool_t ORB__ok    = false;          Bool_t ORB__ok    = false;    
3116        Bool_t GP__ok     = false;    
3117            
3118      Bool_t RUN__ok    = false;      Bool_t RUN__ok    = false;
3119            
# Line 2712  Bool_t  PamLevel2::CheckLevel2File(TStri Line 3145  Bool_t  PamLevel2::CheckLevel2File(TStri
3145  //          return false;  //          return false;
3146  //      };  //      };
3147    
3148            //=========================================================    
3149            // check if the file
3150            
3151    
3152          if( !strcmp(key->GetName(),"Run"        ) )RUN__ok = true;                if( !strcmp(key->GetName(),"Run"        ) )RUN__ok = true;      
3153    
# Line 2838  Bool_t  PamLevel2::CheckLevel2File(TStri Line 3274  Bool_t  PamLevel2::CheckLevel2File(TStri
3274              };                  };    
3275              T->Delete();              T->Delete();
3276          };                };      
3277            //=========================================================    
3278            if( !strcmp(key->GetName(),"h20") ){
3279                ISGP = true;    
3280                GP__ok = true;
3281                if(GP){
3282                    Int_t nevt = ((TTree*)f->Get("h20"))->GetEntries();
3283                    if( nev && nevt!=nev){
3284                        cout << "File: "<< f->GetName() <<" discarded ---- OrbitalInfo tree has "<<nevt<<" events instead of "<<nev<< endl;
3285                        return false;
3286                    }
3287                    nev=nevt;
3288                }
3289            }
3290    
3291      };      };
3292    
# Line 2927  Bool_t  PamLevel2::CheckLevel2File(TStri Line 3376  Bool_t  PamLevel2::CheckLevel2File(TStri
3376          cout << "File: "<< f->GetName() <<" discarded ---- Missing Trigger tree"<< endl;          cout << "File: "<< f->GetName() <<" discarded ---- Missing Trigger tree"<< endl;
3377          return false;          return false;
3378      };      };
3379        if(GP && !GP__ok){
3380            cout << "File: "<< f->GetName() <<" discarded ---- Missing h20 tree"<< endl;
3381            return false;
3382        };
3383            
3384    
3385  //    lk->Delete();  //    lk->Delete();
# Line 2945  Bool_t  PamLevel2::CheckLevel2File(TStri Line 3398  Bool_t  PamLevel2::CheckLevel2File(TStri
3398  //     if(ND)cout<<"ND ";  //     if(ND)cout<<"ND ";
3399  //     if(S4)cout<<"S4 ";  //     if(S4)cout<<"S4 ";
3400  //     if(ORB)cout<<"ORB ";  //     if(ORB)cout<<"ORB ";
3401    //     if(GP)cout<<"GP ";
3402  //     cout << endl;  //     cout << endl;
3403                
3404      return true;      return true;
# Line 3114  void PamLevel2::CreateCloneTrees(TFile * Line 3568  void PamLevel2::CreateCloneTrees(TFile *
3568          cout << "OrbitalInfo  : branch OrbitalInfo"<<endl;          cout << "OrbitalInfo  : branch OrbitalInfo"<<endl;
3569          i++;          i++;
3570      };      };
3571        // GPamela
3572        if(GP) {
3573            pam_tree_clone[i] = new TTree("h20","PAMELA oribital info  ");  
3574            pam_tree_clone[i]->Branch("GPamela","GPamela", GetPointerTo("GPamela"),32000,1);//split
3575            cout << "OrbitalInfo  : branch OrbitalInfo"<<endl;
3576            i++;
3577        };
3578      cout << "+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+" <<endl;      cout << "+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+" <<endl;
3579    
3580  }  }
# Line 3204  Int_t PamLevel2::GetEntry(Long64_t iee){ Line 3665  Int_t PamLevel2::GetEntry(Long64_t iee){
3665          cout << " Int_t PamLevel2::GetEntry(Int_t) -- ERROR -- error reading pam tree"<<endl;          cout << " Int_t PamLevel2::GetEntry(Int_t) -- ERROR -- error reading pam tree"<<endl;
3666          return 0;          return 0;
3667      }      }
3668    
3669    //    cout << " gp_obj->P0 "<<gp_obj->P0<<endl;
3670      //      //
3671      // ... that's way I put it here. Notice that nothing change in the code (is backward compatible) since in any case you return with 0.      // ... that's way I put it here. Notice that nothing change in the code (is backward compatible) since in any case you return with 0.
3672      // in theory one would like to return 1 if run is not loaded but now I don't have the will to add that 2 lines of code and it is not      // in theory one would like to return 1 if run is not loaded but now I don't have the will to add that 2 lines of code and it is not
# Line 3536  TChain* PamLevel2::AddFriend(TString cna Line 3999  TChain* PamLevel2::AddFriend(TString cna
3999      return c;          return c;    
4000    
4001  }  }
4002    
4003    

Legend:
Removed from v.1.51  
changed lines
  Added in v.1.52

  ViewVC Help
Powered by ViewVC 1.1.23