| 9 |  |  | 
| 10 | #include <TRefArray.h> | #include <TRefArray.h> | 
| 11 |  |  | 
| 12 |  | #include <TrkStruct.h> | 
| 13 |  | #include <TrkParams.h> | 
| 14 |  | #include <TrkLevel0.h> | 
| 15 | #include <TrkLevel1.h> | #include <TrkLevel1.h> | 
| 16 | #include <TrkLevel2.h> | #include <TrkLevel2.h> | 
| 17 |  | #include <TrkHough.h> | 
| 18 |  | #include <CaloLevel0.h> | 
| 19 |  | #include <CaloLevel1.h> | 
| 20 | #include <CaloLevel2.h> | #include <CaloLevel2.h> | 
| 21 | #include <ToFLevel2.h> | #include <ToFLevel2.h> | 
| 22 | #include <TrigLevel2.h> | #include <TrigLevel2.h> | 
| 24 | #include <NDLevel2.h> | #include <NDLevel2.h> | 
| 25 | #include <AcLevel2.h> | #include <AcLevel2.h> | 
| 26 | #include <OrbitalInfo.h> | #include <OrbitalInfo.h> | 
|  | #include <OrbitalInfo.h> |  | 
| 27 | #include <RunInfo.h> | #include <RunInfo.h> | 
| 28 | #include <GLTables.h> | #include <GLTables.h> | 
| 29 |  |  | 
| 30 |  |  | 
| 31 | #include <TTree.h> | #include <TTree.h> | 
| 32 |  | #include <TFriendElement.h> | 
| 33 | #include <TChain.h> | #include <TChain.h> | 
| 34 |  | #include <TChainElement.h> | 
| 35 | #include <TFile.h> | #include <TFile.h> | 
| 36 | #include <TList.h> | #include <TList.h> | 
| 37 | #include <TKey.h> | #include <TKey.h> | 
| 38 | #include <TSystemFile.h> | #include <TSystemFile.h> | 
| 39 | #include <TSystemDirectory.h> | #include <TSystemDirectory.h> | 
| 40 |  | #include <TSQLServer.h> | 
| 41 |  |  | 
| 42 |  | #include <stdlib.h> | 
| 43 | #include <iostream> | #include <iostream> | 
| 44 |  | #include <iomanip> | 
| 45 |  | using namespace std; | 
| 46 |  |  | 
| 47 |  | #define NCLONES 10 | 
| 48 |  |  | 
| 49 | using namespace std; | using namespace std; | 
| 50 |  |  | 
| 51 | /** | /** | 
| 54 | * This class inherites from TrkTrack, CaloTrkVar ecc... | * This class inherites from TrkTrack, CaloTrkVar ecc... | 
| 55 | * | * | 
| 56 | */ | */ | 
| 57 | class PamTrack : public TrkTrack, public CaloTrkVar, public ToFTrkVar { | //class PamTrack : public TrkTrack, public CaloTrkVar, public ToFTrkVar { | 
| 58 |  | class PamTrack : public TObject { | 
| 59 |  |  | 
| 60 | private: | private: | 
| 61 |  |  | 
| 62 | TrkTrack*   trk_track; | TrkTrack*   trk_track; | 
| 63 | CaloTrkVar* calo_track; | CaloTrkVar* calo_track; | 
| 64 | ToFTrkVar*  tof_track; | ToFTrkVar*  tof_track; | 
| 65 |  | Int_t pscore; | 
| 66 |  | Int_t iscore; | 
| 67 |  | bool candeleteobj; | 
| 68 |  |  | 
| 69 |  | //    TClonesArray *Cluster;        ///< clusters (if stored) | 
| 70 |  |  | 
| 71 | public: | public: | 
| 72 |  |  | 
| 73 | PamTrack(); | PamTrack(); | 
|  |  |  | 
| 74 | PamTrack(TrkTrack* , CaloTrkVar* , ToFTrkVar* ); | PamTrack(TrkTrack* , CaloTrkVar* , ToFTrkVar* ); | 
| 75 |  | PamTrack(const PamTrack&); | 
| 76 |  | ~PamTrack(){ Delete(); }; | 
| 77 |  |  | 
| 78 |  | void Clear(); | 
| 79 |  | void Clear(Option_t *option){Clear();}; | 
| 80 |  | void Delete(); | 
| 81 |  |  | 
| 82 |  | Bool_t IsSolved(){if ((pscore-iscore)>0) return true; return false;}; | 
| 83 |  | Int_t GetScore(){return (pscore-iscore);}; | 
| 84 |  | Int_t GetPScore(){return (pscore);}; | 
| 85 |  | Int_t GetIScore(){return (iscore);}; | 
| 86 |  | void SetPScore(Int_t p){pscore=p;}; | 
| 87 |  | void SetIScore(Int_t i){iscore=i;}; | 
| 88 |  |  | 
| 89 |  | TrkTrack*   GetTrkTrack(){return trk_track;}; | 
| 90 |  | CaloTrkVar* GetCaloTrack(){return calo_track;}; | 
| 91 |  | ToFTrkVar*  GetToFTrack(){return tof_track;}; | 
| 92 |  |  | 
| 93 | ClassDef(PamTrack,1); | ClassDef(PamTrack,1); | 
| 94 | }; | }; | 
| 100 | * This allows to solve the tracker ambiguity (that is, to choose between track images) by using also information from other detectors. | * This allows to solve the tracker ambiguity (that is, to choose between track images) by using also information from other detectors. | 
| 101 | */ | */ | 
| 102 |  |  | 
| 103 | class PamLevel2 : public CaloLevel2, public TrkLevel2, public TrkLevel1, public ToFLevel2, public TrigLevel2, public S4Level2, public NDLevel2, public AcLevel2, public OrbitalInfo { | //class PamLevel2 : public CaloLevel2, public CaloLevel1, public ToFLevel2, public TrkLevel2, public TrkLevel1, public TrkHough, public TrigLevel2, public S4Level2, public NDLevel2, public AcLevel2, public OrbitalInfo { | 
| 104 |  | class PamLevel2 : public TObject { | 
| 105 |  |  | 
| 106 | private: | private: | 
| 107 |  |  | 
| 108 | TrkLevel1*   trk_l1_obj; | // ------------------------------ | 
| 109 | TrkLevel2*   trk_obj; | // variables to retrieve run info | 
| 110 | CaloLevel2*  calo_obj; | // ------------------------------ | 
| 111 |  | //    Int_t     irun;          //current run entry, relative to the TChain | 
| 112 |  | Long64_t  irun;          //current run entry, relative to the TChain | 
| 113 |  | //    ULong64_t runfirstentry; //first entry of run, relative to the TChain | 
| 114 |  | //    ULong64_t runlastentry;  //last  entry of run, relative to the TChain | 
| 115 |  | //    Int_t     irunentry;     //position of current entry, relative to the run | 
| 116 |  | Long64_t  runfirstentry; //first entry of run, relative to the TChain | 
| 117 |  | Long64_t  runlastentry;  //last  entry of run, relative to the TChain | 
| 118 |  | Long64_t  irunentry;     //position of current entry, relative to the run | 
| 119 |  | TChain*   run_tree; | 
| 120 |  | TTree*    run_tree_clone; | 
| 121 |  | TChain*   sel_tree; | 
| 122 |  | TTree*    sel_tree_clone; | 
| 123 |  |  | 
| 124 |  | // ------------------------------------------- | 
| 125 |  | // variables to store total live and dead time | 
| 126 |  | // ------------------------------------------- | 
| 127 |  | ULong64_t  totdltime[3];// 0=live 1=dead 2=n.events | 
| 128 |  |  | 
| 129 |  | // --------------------------------- | 
| 130 |  | // variables to retrieve level0 info | 
| 131 |  | // --------------------------------- | 
| 132 |  | TFile*      l0_file; | 
| 133 |  | TTree*      l0_tree; | 
| 134 |  | Int_t       iroot; | 
| 135 |  | Int_t       prevshift; // to remember if any shift is needed to synchronize l0 and l2 data instead of calculating any time | 
| 136 |  | Int_t       maxshift; // EMILIANO maximum discrepancy between L2 and L0 data (the bigger the better concering synch but the processing speed drops) default = 10 | 
| 137 |  | // -------------------------------------------- | 
| 138 |  | // variables to store Level0 info (if required) | 
| 139 |  | // -------------------------------------------- | 
| 140 |  | EventHeader* h0_obj; | 
| 141 |  | TrkLevel0*   trk0_obj; | 
| 142 |  | CaloLevel0*  calo0_obj; | 
| 143 |  |  | 
| 144 |  | // --------------------------- | 
| 145 |  | // variables to connect the DB | 
| 146 |  | // --------------------------- | 
| 147 |  | TSQLServer* dbc; | 
| 148 |  | TString host; | 
| 149 |  | TString user; | 
| 150 |  | TString psw; | 
| 151 |  |  | 
| 152 |  | // --------------------------------------------- | 
| 153 |  | // variables to retrieve and clone level1-2 info | 
| 154 |  | // --------------------------------------------- | 
| 155 |  | TChain* pam_tree; | 
| 156 |  | TTree*  pam_tree_clone[NCLONES]; | 
| 157 |  |  | 
| 158 |  | // -------------------------------------------- | 
| 159 |  | // variables to store Level0 info (if required) | 
| 160 |  | // -------------------------------------------- | 
| 161 |  | TrkLevel1*   trk1_obj; | 
| 162 |  | TrkLevel2*   trk2_obj; | 
| 163 |  | TrkHough*    trkh_obj; | 
| 164 |  | CaloLevel1*  calo1_obj; | 
| 165 |  | CaloLevel2*  calo2_obj; | 
| 166 | ToFLevel2*   tof_obj; | ToFLevel2*   tof_obj; | 
| 167 | TrigLevel2*  trig_obj; | TrigLevel2*  trig_obj; | 
| 168 | S4Level2*    s4_obj; | S4Level2*    s4_obj; | 
| 169 | NDLevel2*    nd_obj; | NDLevel2*    nd_obj; | 
| 170 | AcLevel2*    ac_obj; | AcLevel2*    ac_obj; | 
| 171 | OrbitalInfo* orb_obj; | OrbitalInfo* orb_obj; | 
| 172 |  | GL_RUN*      run_obj; | 
| 173 | GL_RUN*      run_obj; | SoftInfo*    soft_obj; // Emiliano | 
| 174 |  |  | 
| 175 | TRefArray*   sorted_tracks; | // ----------------------------------- | 
| 176 |  | // variables to sort the track | 
| 177 | TChain*      Tout; | // ----------------------------------- | 
| 178 |  | TClonesArray *tsorted; | 
| 179 | public: | TClonesArray *timage; | 
| 180 |  | PamTrack    *track; //store the last required | 
| 181 |  | TString howtosort; | 
| 182 |  | Float_t sortthr; | 
| 183 |  |  | 
| 184 |  | // ----- | 
| 185 |  | // flags | 
| 186 |  | // ----- | 
| 187 |  | Bool_t CAL2; //level2 branch | 
| 188 |  | Bool_t CAL1; //level1 branch | 
| 189 |  | Bool_t CAL0; //yoda | 
| 190 |  |  | 
| 191 |  | Bool_t TRK2; //level2 branch | 
| 192 |  | Bool_t TRK1; //level1 branch | 
| 193 |  | Bool_t TRKh; //hough branch | 
| 194 |  | Bool_t TRK0; //yoda | 
| 195 |  |  | 
| 196 |  | Bool_t TOF; | 
| 197 |  | Bool_t TOF0; | 
| 198 |  |  | 
| 199 |  | Bool_t TRG; | 
| 200 |  | Bool_t S4; | 
| 201 |  | Bool_t ND; | 
| 202 |  | Bool_t AC; | 
| 203 |  | Bool_t ORB; | 
| 204 |  |  | 
| 205 | Bool_t CAL; | Bool_t RUN; | 
| 206 | Bool_t TRK; |  | 
| 207 | Bool_t TRG; | Bool_t ISGP; //GP simulation | 
| 208 | Bool_t TOF; |  | 
| 209 | Bool_t S4; |  | 
| 210 | Bool_t ND; | Int_t  SELLI; //trees of selected events (there is a selection list) | 
| 211 | Bool_t AC; |  | 
| 212 | Bool_t ORB; | void Initialize(); | 
| 213 |  |  | 
| 214 | Bool_t TRK_L1; |  | 
| 215 |  | public: | 
| 216 |  |  | 
| 217 |  | PamLevel2(TString ddir,TString list,TString detlist); | 
| 218 |  | PamLevel2(TString ddir,TString list); | 
| 219 | PamLevel2(); | PamLevel2(); | 
| 220 | ~PamLevel2(); | ~PamLevel2(){Delete();}; | 
| 221 |  |  | 
| 222 | void Clear(); | void Clear(); | 
| 223 |  | void Reset(); | 
| 224 |  | void Delete(); | 
| 225 |  |  | 
| 226 |  |  | 
| 227 |  | //  ============================================= | 
| 228 |  | //  methods needed to read/write Level0-1-2 trees | 
| 229 |  | //  ============================================= | 
| 230 |  | void    SetWhichTrees(TString); | 
| 231 |  | void    GetWhichTrees(TFile*); | 
| 232 |  |  | 
| 233 |  | TTree*  GetPamTree(TFile*,TString); | 
| 234 |  | TTree*  GetPamTree(TFile* f){return GetPamTree(f,"");}; | 
| 235 |  |  | 
| 236 |  | TList*  GetListOfLevel2Files(TString, TString); | 
| 237 |  | Bool_t  CheckLevel2File(TString); | 
| 238 |  | TChain* GetPamTree(TList*,TString); | 
| 239 |  | TChain* GetPamTree(TString ddir,TString list,TString detlist){ return GetPamTree(GetListOfLevel2Files(ddir,list),detlist); }; | 
| 240 |  | TChain* GetPamTree(TString ddir,TString list){ return GetPamTree(GetListOfLevel2Files(ddir,list),""); }; | 
| 241 |  | TChain* AddFriend(TString); | 
| 242 |  |  | 
| 243 |  | TTree*  GetRunTree(TFile*); | 
| 244 |  | TChain* GetRunTree(TList*); | 
| 245 |  | TChain* GetRunTree(TString ddir,TString list){ return GetRunTree(GetListOfLevel2Files(ddir,list)); }; | 
| 246 |  | Bool_t  UpdateRunInfo(Long64_t);//{ return UpdateRunInfo(run_tree,iev); }; | 
| 247 |  | Bool_t  UpdateRunInfo(TTree *,Long64_t); | 
| 248 |  | Bool_t  UpdateRunInfo(TChain *,Long64_t); | 
| 249 |  |  | 
| 250 |  | void    CreateCloneTrees0(TChain *fChain, TFile* file); | 
| 251 |  | void    CreateCloneTrees(TFile* file); | 
| 252 |  | void    CreateCloneTrees(){CreateCloneTrees(NULL);}; | 
| 253 |  | void    FillCloneTrees(); | 
| 254 |  | TTree  *GetCloneTree(TString); | 
| 255 |  | void    WriteCloneTrees(); | 
| 256 |  |  | 
| 257 |  | void    SetBranchAddress(TTree *); | 
| 258 |  | void    SetBranchAddress(TChain *); | 
| 259 |  |  | 
| 260 |  | //    Int_t   GetEntry(Int_t); | 
| 261 |  | Int_t   GetEntry(Long64_t); | 
| 262 |  | Int_t   GetYodaEntry(); | 
| 263 |  |  | 
| 264 | TrkLevel1*   GetTrkLevel1()  { return trk_l1_obj;  }; | void SetMaxShift(Int_t sh){ maxshift = sh; return;}; // EMILIANO method to change the maxshift variable | 
|  | TrkLevel2*   GetTrkLevel2()  { return trk_obj;  }; |  | 
|  | CaloLevel2*  GetCaloLevel2() { return calo_obj; }; |  | 
|  | ToFLevel2*   GetToFLevel2()  { return tof_obj;  }; |  | 
|  | TrigLevel2*  GetTrigLevel2() { return trig_obj; }; |  | 
|  | S4Level2*    GetS4Level2()   { return s4_obj;   }; |  | 
|  | NDLevel2*    GetNDLevel2()   { return nd_obj;   }; |  | 
|  | AcLevel2*    GetAcLevel2()   { return ac_obj;   }; |  | 
|  | OrbitalInfo* GetOrbitalInfo(){ return orb_obj;  }; |  | 
|  | GL_RUN*      GetRunInfo()    { return run_obj;  }; |  | 
|  |  |  | 
|  | //  ===================================== |  | 
|  | //  methods needed to read Level2 trees |  | 
|  | //  ===================================== |  | 
|  | void    SetWhichTrees(TString); |  | 
|  | TList*  GetListOfLevel2Files(TString, TString); |  | 
|  | Bool_t  CheckLevel2File(TString); |  | 
|  | void    SetBranchAddress(); |  | 
|  | TTree*  GetPamTree(TFile*,TString); |  | 
|  | TTree*  GetPamTree(TFile* f){return GetPamTree(f,"+ALL");}; |  | 
|  | TChain* GetPamTree(TList*,TString); |  | 
|  | TTree*  GetRunTree(TFile*); |  | 
|  | TChain* GetRunTree(TList*); |  | 
| 265 |  |  | 
| 266 | //  ===================================== | Long64_t GetEntries(){return pam_tree->GetEntries();}; | 
| 267 | //  methods needed to set brach addresses | TChain* GetPamTree(){return pam_tree;}; | 
| 268 | //  ===================================== | TChain* GetRunTree(){return run_tree;}; | 
| 269 | void*       GetPointerToTrk()  {return &trk_obj;}; | TTree*  GetYodaTree(); | 
| 270 | void*       GetPointerToTrk(int s){ |  | 
| 271 | switch (s) { | TFile*  GetYodaFile(){return l0_file;}; // can be useful to know the name of level0 file we are using or similar things | 
| 272 | case 1:  return &trk_l1_obj; |  | 
| 273 | case 2:  return &trk_obj; | //  ============= | 
| 274 | default: return 0; | //  DB connection | 
| 275 | }; | //  ============= | 
| 276 | }; | void SetDBHost(TString str){host=str;}; | 
| 277 | void*       GetPointerToCalo() {return &calo_obj; }; | void SetDBUser(TString str){user=str;}; | 
| 278 | void*       GetPointerToToF()  {return &tof_obj;  }; | void SetDBPsw(TString str){psw=str;}; | 
| 279 | void*       GetPointerToTrig() {return &trig_obj; }; | TSQLServer* GetSQLServer(){return dbc;}; | 
| 280 | void*       GetPointerToS4()   {return &s4_obj;   }; | Bool_t SetDBConnection(); | 
| 281 | void*       GetPointerToND()   {return &nd_obj;   }; |  | 
| 282 | void*       GetPointerToAc()   {return &ac_obj;   }; | //  ======================================================== | 
| 283 | void*       GetPointerToOrb()  {return &orb_obj;  }; | //  methods needed to retrieve subdetector general variables | 
| 284 | void*       GetPointerToRun()  {return &run_obj;  }; | //  ======================================================== | 
| 285 | void*       GetPointerTo(const char*); | void*       GetPointerTo(const char*); | 
| 286 |  | EventHeader  *GetEventHeader()  { return h0_obj; }; | 
| 287 |  |  | 
| 288 |  | /*     TrkLevel0    *GetTrkLevel0()   { return trk0_obj; }; */ | 
| 289 |  | /*     CaloLevel0   *GetCaloLevel0()  { return calo0_obj; }; */ | 
| 290 |  | TrkLevel0    *GetTrkLevel0(); | 
| 291 |  | CaloLevel0   *GetCaloLevel0(); | 
| 292 |  |  | 
| 293 |  |  | 
| 294 |  | TrkLevel1    *GetTrkLevel1()  { return trk1_obj; }; | 
| 295 |  | TrkLevel2    *GetTrkLevel2()  { return trk2_obj; }; | 
| 296 |  | TrkHough     *GetTrkHough()   { return trkh_obj; }; | 
| 297 |  | CaloLevel1   *GetCaloLevel1() { return calo1_obj;}; | 
| 298 |  | CaloLevel2   *GetCaloLevel2() { return calo2_obj;}; | 
| 299 |  | ToFLevel2    *GetToFLevel2()  { return tof_obj;  }; | 
| 300 |  | TrigLevel2   *GetTrigLevel2() { return trig_obj; }; | 
| 301 |  | S4Level2     *GetS4Level2()   { return s4_obj;   }; | 
| 302 |  | NDLevel2     *GetNDLevel2()   { return nd_obj;   }; | 
| 303 |  | AcLevel2     *GetAcLevel2()   { return ac_obj;   }; | 
| 304 |  | OrbitalInfo  *GetOrbitalInfo(){ return orb_obj;  }; | 
| 305 |  | GL_RUN       *GetRunInfo()    { return run_obj;  }; | 
| 306 |  | SoftInfo     *GetSoftInfo()   { return soft_obj; }; // Emiliano | 
| 307 |  |  | 
| 308 | //  ============================================== | //  ============================================== | 
| 309 | //  methods to retrieve subdetectors stored tracks | //  methods to retrieve subdetectors stored tracks | 
| 310 | //  ============================================== | //  ============================================== | 
| 311 | TrkTrack*   GetTrkStoredTrack(int seqno){return TrkLevel2::GetStoredTrack(seqno); }; | TrkTrack*   GetTrkStoredTrack(int seqno){return trk2_obj->TrkLevel2::GetStoredTrack(seqno); }; | 
| 312 | CaloTrkVar* GetCaloStoredTrack(int); | CaloTrkVar* GetCaloStoredTrack(int); | 
| 313 | ToFTrkVar*  GetToFStoredTrack(int); | ToFTrkVar*  GetToFStoredTrack(int); | 
| 314 | // | // | 
| 315 | PamTrack*   GetPamTrackAlong(TrkTrack*); | PamTrack*   GetPamTrackAlong(TrkTrack*); | 
| 316 | //      PamTrack*   GetPamTrackAlong(CaloTrkVar*);      //se serve | //      PamTrack*   GetPamTrackAlong(CaloTrkVar*);      //se serve | 
| 317 | //      PamTrack*   GetPamTrackAlong(ToFTrkVar*);      //se serve | //      PamTrack*   GetPamTrackAlong(ToFTrkVar*);      //se serve | 
| 318 |  |  | 
| 320 | //  methods to retrieve pamela tracks | //  methods to retrieve pamela tracks | 
| 321 | //  ================================= | //  ================================= | 
| 322 | PamTrack*     GetStoredTrack(Int_t); | PamTrack*     GetStoredTrack(Int_t); | 
| 323 | // | // | 
| 324 | void          SortTracks(TString);          //assign value to variable sorted_tracks | void          SortTracks(TString);          //assign value to variable sorted_tracks | 
| 325 | TRefArray*    GetTracks();                  //return sorted_tracks | void          SortTracks();          //assign value to variable sorted_tracks | 
| 326 | PamTrack*     GetTrack(int); | //    TRefArray*    GetTracks();                  //return sorted_tracks | 
| 327 |  | TClonesArray* GetTracks();                  //return sorted_tracks | 
| 328 |  | PamTrack*     GetTrack(int); | 
| 329 | PamTrack*     GetTrackImage(int); | PamTrack*     GetTrackImage(int); | 
| 330 |  | void          SetSortingMethod(TString how){ howtosort = how; return;}; | 
| 331 |  | TString       GetSortingMethod(){return howtosort;}; | 
| 332 |  | void          SetNucleiSortingThreshold(Float_t nucleithr){ sortthr = nucleithr; return;}; | 
| 333 |  | Float_t       GetNucleiSortingThreshold(){ return sortthr;}; | 
| 334 |  |  | 
| 335 |  | //  ================================= | 
| 336 |  | //  other methods | 
| 337 |  | //  ================================= | 
| 338 |  | //    Int_t ntrk(){ return trk2_obj->TrkLevel2::ntrk(); }; | 
| 339 |  |  | 
| 340 |  | // ----- | 
| 341 |  | // flags methods | 
| 342 |  | // ----- | 
| 343 |  | Bool_t IsCAL2(){return CAL2;}; //level2 branch | 
| 344 |  | Bool_t IsCAL1(){return CAL1;}; //level1 branch | 
| 345 |  | Bool_t IsCAL0(){return CAL0;}; //yoda | 
| 346 |  |  | 
| 347 |  | Bool_t IsTRK2(){return TRK2;}; //level2 branch | 
| 348 |  | Bool_t IsTRK1(){return TRK1;}; //level1 branch | 
| 349 |  | Bool_t IsTRKh(){return TRKh;}; //hough branch | 
| 350 |  | Bool_t IsTRK0(){return TRK0;}; //yoda | 
| 351 |  |  | 
| 352 |  | Bool_t IsTOF(){return TOF;}; | 
| 353 |  | Bool_t IsTOF0(){return TOF0;}; | 
| 354 |  |  | 
| 355 |  | Bool_t IsTRG(){return TRG;}; | 
| 356 |  | Bool_t IsS4(){return S4;}; | 
| 357 |  | Bool_t IsND(){return ND;}; | 
| 358 |  | Bool_t IsAC(){return AC;}; | 
| 359 |  | Bool_t IsORB(){return ORB;}; | 
| 360 |  |  | 
| 361 |  | Bool_t IsRUN(){return RUN;}; | 
| 362 |  |  | 
| 363 |  | Bool_t IsGood(); | 
| 364 |  |  | 
| 365 |  | Int_t  IsSELLI(){return SELLI;}; //trees of selected events (there is a selection list) | 
| 366 |  |  | 
| 367 |  | Bool_t IsGP(){return ISGP;}; | 
| 368 |  |  | 
| 369 |  | void   SetGP(Bool_t tt){ISGP=tt;}; | 
| 370 |  |  | 
| 371 |  |  | 
| 372 | ClassDef(PamLevel2,1); | ClassDef(PamLevel2,1); | 
| 373 | }; | }; | 
| 374 |  |  |