/[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.3 by pam-fi, Mon Aug 7 08:24:49 2006 UTC revision 1.4 by pam-fi, Fri Sep 29 10:02:30 2006 UTC
# Line 36  PamTrack::PamTrack(TrkTrack* t, CaloTrkV Line 36  PamTrack::PamTrack(TrkTrack* t, CaloTrkV
36   */   */
37  PamLevel2::PamLevel2(){  PamLevel2::PamLevel2(){
38                    
39      trk_obj  = this->TrkLevel2::GetTrkLevel2();      trk_l1_obj  = this->TrkLevel1::GetTrkLevel1();      
40      calo_obj = this->CaloLevel2::GetCaloLevel2();          trk_obj     = this->TrkLevel2::GetTrkLevel2();
41      tof_obj  = this->ToFLevel2::GetToFLevel2();          calo_obj    = this->CaloLevel2::GetCaloLevel2();
42      trig_obj = this->TrigLevel2::GetTrigLevel2();      tof_obj     = this->ToFLevel2::GetToFLevel2();
43      s4_obj   = this->S4Level2::GetS4Level2();      trig_obj    = this->TrigLevel2::GetTrigLevel2();
44      nd_obj   = this->NDLevel2::GetNDLevel2();      s4_obj      = this->S4Level2::GetS4Level2();
45      ac_obj   = this->AcLevel2::GetAcLevel2();      nd_obj      = this->NDLevel2::GetNDLevel2();
46          orb_obj  = this->OrbitalInfo::GetOrbitalInfo();      ac_obj      = this->AcLevel2::GetAcLevel2();
47            orb_obj     = this->OrbitalInfo::GetOrbitalInfo();
48    
49            run_obj     = new GL_RUN();
50            
51          sorted_tracks = new TRefArray();          sorted_tracks = new TRefArray();
52    
53          CAL = true;          CAL = true;
# Line 56  PamLevel2::PamLevel2(){ Line 59  PamLevel2::PamLevel2(){
59          AC  = true;          AC  = true;
60          ORB = true;          ORB = true;
61    
62            TRK_L1 = false;
63    
64            Tout  = NULL;
65  };  };
66  /**  /**
67   * Destructor   * Destructor
68   */   */
69  PamLevel2::~PamLevel2(){  PamLevel2::~PamLevel2(){
70                                    
71            TrkLevel1::Clear();
72            
73          TrkLevel2::Clear();          TrkLevel2::Clear();
74          CaloLevel2::Clear();          CaloLevel2::Clear();
75          ToFLevel2::Clear();          ToFLevel2::Clear();
# Line 71  PamLevel2::~PamLevel2(){ Line 79  PamLevel2::~PamLevel2(){
79          AcLevel2::Clear();          AcLevel2::Clear();
80          OrbitalInfo::Clear();          OrbitalInfo::Clear();
81                    
82          delete sorted_tracks;          delete run_obj;
83            
84    //      delete sorted_tracks;
85            sorted_tracks->Delete(); // clean the reference array
86            
87            if(Tout)Tout->Delete(); // delete loaded tree from memory
88                    
89  };  };
90  /**  /**
# Line 79  PamLevel2::~PamLevel2(){ Line 92  PamLevel2::~PamLevel2(){
92   */   */
93  void PamLevel2::Clear(){  void PamLevel2::Clear(){
94                    
95            TrkLevel1::Clear();
96            
97            TrkLevel2::Clear();
98            CaloLevel2::Clear();
99            ToFLevel2::Clear();
100            TrigLevel2::Clear();
101            S4Level2::Clear();
102            NDLevel2::Clear();
103            AcLevel2::Clear();
104            OrbitalInfo::Clear();
105                    
106          sorted_tracks->Delete();          sorted_tracks->Delete(); // clean the reference array
107                    
108  };  };
109    
# Line 95  void PamLevel2::Clear(){ Line 118  void PamLevel2::Clear(){
118   */   */
119   CaloTrkVar *PamLevel2::GetCaloStoredTrack(int seqno){   CaloTrkVar *PamLevel2::GetCaloStoredTrack(int seqno){
120                    
121             if( CaloLevel2::ntrk()==0 ){
122                     cout << "PamLevel2::GetCaloStoredTrack(int) : requested tracker SeqNo "<< seqno <<" but no Calorimeter tracks are stored"<<endl;
123                     return NULL;
124             };
125            
126           CaloTrkVar *c = 0;           CaloTrkVar *c = 0;
127           Int_t it_calo=0;           Int_t it_calo=0;
128                    
# Line 120  void PamLevel2::Clear(){ Line 148  void PamLevel2::Clear(){
148   */   */
149   ToFTrkVar *PamLevel2::GetToFStoredTrack(int seqno){   ToFTrkVar *PamLevel2::GetToFStoredTrack(int seqno){
150                    
151             if( ToFLevel2::ntrk()==0 ){
152                     cout << "PamLevel2::GetToFStoredTrack(int) : requested tracker SeqNo "<< seqno <<" but no ToF tracks are stored"<<endl;
153                     return NULL;
154             };
155            
156           ToFTrkVar *c = 0;           ToFTrkVar *c = 0;
157           Int_t it_tof=0;           Int_t it_tof=0;
158                    
# Line 200  PamTrack* PamLevel2::GetStoredTrack(Int_ Line 233  PamTrack* PamLevel2::GetStoredTrack(Int_
233   */   */
234  void PamLevel2::SortTracks(TString how){  void PamLevel2::SortTracks(TString how){
235    
236          sorted_tracks->Delete(); //temporaneo    //Save current Object count
237            Int_t ObjectNumber = TProcessID::GetObjectCount();
238            
239            sorted_tracks->Delete(); //temporaneo???
240            
241      // loop over the tracks sorted by the tracker      // loop over the tracks sorted by the tracker
242          Bool_t use_TRK = how.Contains("TRK", TString::kIgnoreCase);          Bool_t use_TRK = how.Contains("TRK", TString::kIgnoreCase);
243          Bool_t use_CAL = how.Contains("CAL", TString::kIgnoreCase);          Bool_t use_CAL = how.Contains("CAL", TString::kIgnoreCase);
# Line 297  void PamLevel2::SortTracks(TString how){ Line 334  void PamLevel2::SortTracks(TString how){
334                  }else{                  }else{
335                          ts = tp;                          ts = tp;
336                  };                  };
337                                            
338    //              cout <<" SortTracks() "<<i<<" -- "<<ts<<endl;
339                  sorted_tracks->Add(ts);//save the track in the sorted array                  sorted_tracks->Add(ts);//save the track in the sorted array
340    //              cout << "SortTracks:: sorted_tracks->Add(it) "<<i<<" "<<ts<<endl;
341                                    
342          };          };
343      //Restore Object count
344      //To save space in the table keeping track of all referenced objects
345      //we assume that our events do not address each other. We reset the
346      //object count to what it was at the beginning of the event.
347            TProcessID::SetObjectCount(ObjectNumber);
348    
349  };  };
350  //--------------------------------------  //--------------------------------------
# Line 312  void PamLevel2::SortTracks(TString how){ Line 356  void PamLevel2::SortTracks(TString how){
356   * PamLevel2::GetTracks() keeps the same track order given by TrkLevel2::GetTracks(), but checks image selection by using calorimeter and ToF tracking information.   * PamLevel2::GetTracks() keeps the same track order given by TrkLevel2::GetTracks(), but checks image selection by using calorimeter and ToF tracking information.
357   */   */
358   TRefArray *PamLevel2::GetTracks(){   TRefArray *PamLevel2::GetTracks(){
359             //
360          SortTracks("+CAL+TOF");          SortTracks("+CAL+TOF");
361            //
362          return sorted_tracks;          return sorted_tracks;
363   };   };
364  //--------------------------------------  //--------------------------------------
# Line 334  PamTrack *PamLevel2::GetTrack(int it){ Line 380  PamTrack *PamLevel2::GetTrack(int it){
380                    
381          if( it >=0 && it < TrkLevel2::GetNTracks() ){          if( it >=0 && it < TrkLevel2::GetNTracks() ){
382                  TrkTrack   *t = (TrkTrack*)sorted_tracks->At(it);                  TrkTrack   *t = (TrkTrack*)sorted_tracks->At(it);
383    //              cout << "GetTrack(int it):: sorted_tracks->At(it) "<<it<<" "<<t<<endl;
384                  track = GetPamTrackAlong(t);                  track = GetPamTrackAlong(t);
385          }else{          }else{
386                  cout << "PamLevel2::GetTrack(int) : tracker track SeqNo "<< it <<" does not exist (GetNTracks() = "<<TrkLevel2::GetNTracks()<<")"<<endl;                  cout << "PamLevel2::GetTrack(int) : tracker track SeqNo "<< it <<" does not exist (GetNTracks() = "<<TrkLevel2::GetNTracks()<<")"<<endl;
# Line 382  PamTrack *PamLevel2::GetTrackImage(int i Line 429  PamTrack *PamLevel2::GetTrackImage(int i
429   * @param detlist String to select trees to be included   * @param detlist String to select trees to be included
430   * @return Pointer to a TTree   * @return Pointer to a TTree
431   */   */
432  TTree *PamLevel2::LoadPamTrees(TFile *f, TString detlist="+ALL"){  TTree *PamLevel2::GetPamTree(TFile *f, TString detlist="+ALL"){
433        
434      TTree *Tout =0;          cout << "WARNING!!! -- obsolete method -- \n";
435            cout << "better use TChain *PamLevel2::GetPamTree(TList*, TString) \n";
436                    
437          SetWhichTrees(detlist);          TTree *Trout =0;
438                    
439      // Tracker          SetWhichTrees(detlist);
440    // Tracker
441      TTree *T = (TTree*)f->Get("Tracker");      TTree *T = (TTree*)f->Get("Tracker");
442      if(T && TRK) {      if(T && TRK) {
443          T->SetBranchAddress("TrkLevel2", GetPointerToTrk());                  if(TRK_L1){
444          cout << "Tracker      : set branch address TrkLevel2"<<endl;                          T->SetBranchAddress("TrkLevel1", GetPointerToTrk(1));
445          if(!Tout)Tout=T;                          cout << "Tracker      : set branch address TrkLevel1"<<endl;
446                    };
447                    T->SetBranchAddress("TrkLevel2", GetPointerToTrk(2));
448                    cout << "Tracker      : set branch address TrkLevel2"<<endl;
449      }else{      }else{
450          cout << "Tracker      : missing tree"<<endl;          cout << "Tracker      : missing tree"<<endl;
451      };      };
# Line 402  TTree *PamLevel2::LoadPamTrees(TFile *f, Line 454  TTree *PamLevel2::LoadPamTrees(TFile *f,
454      if(C && CAL) {      if(C && CAL) {
455          C->SetBranchAddress("CaloLevel2", GetPointerToCalo());          C->SetBranchAddress("CaloLevel2", GetPointerToCalo());
456          cout << "Calorimeter  : set branch address CaloLevel2"<<endl;          cout << "Calorimeter  : set branch address CaloLevel2"<<endl;
457          if(!Tout)Tout=C;          if(!Trout)Trout=C;
458          else Tout->AddFriend(C);          else Trout->AddFriend(C);
459      }else{      }else{
460          cout << "Calorimeter  : missing tree"<<endl;          cout << "Calorimeter  : missing tree"<<endl;
461      };      };
# Line 412  TTree *PamLevel2::LoadPamTrees(TFile *f, Line 464  TTree *PamLevel2::LoadPamTrees(TFile *f,
464      if(O && TOF) {      if(O && TOF) {
465          O->SetBranchAddress("ToFLevel2", GetPointerToToF());          O->SetBranchAddress("ToFLevel2", GetPointerToToF());
466          cout << "ToF          : set branch address ToFLevel2"<<endl;          cout << "ToF          : set branch address ToFLevel2"<<endl;
467          if(!Tout)Tout=O;          if(!Trout)Trout=O;
468          else Tout->AddFriend(O);          else Trout->AddFriend(O);
469      }else{      }else{
470          cout << "ToF         : missing tree"<<endl;          cout << "ToF         : missing tree"<<endl;
471      };      };
# Line 422  TTree *PamLevel2::LoadPamTrees(TFile *f, Line 474  TTree *PamLevel2::LoadPamTrees(TFile *f,
474      if(R && TRG) {      if(R && TRG) {
475          R->SetBranchAddress("TrigLevel2", GetPointerToTrig());          R->SetBranchAddress("TrigLevel2", GetPointerToTrig());
476          cout << "Trigger      : set branch address TrigLevel2"<<endl;          cout << "Trigger      : set branch address TrigLevel2"<<endl;
477          if(!Tout)Tout=O;          if(!Trout)Trout=O;
478          else Tout->AddFriend(R);          else Trout->AddFriend(R);
479      }else{      }else{
480          cout << "Trigger      : missing tree"<<endl;          cout << "Trigger      : missing tree"<<endl;
481      };      };
# Line 432  TTree *PamLevel2::LoadPamTrees(TFile *f, Line 484  TTree *PamLevel2::LoadPamTrees(TFile *f,
484      if(S && S4) {      if(S && S4) {
485          S->SetBranchAddress("S4Level2", GetPointerToS4());          S->SetBranchAddress("S4Level2", GetPointerToS4());
486          cout << "S4           : set branch address S4Level2"<<endl;          cout << "S4           : set branch address S4Level2"<<endl;
487          if(!Tout)Tout=O;          if(!Trout)Trout=O;
488          else Tout->AddFriend(S);          else Trout->AddFriend(S);
489      }else{      }else{
490          cout << "S4           : missing tree"<<endl;          cout << "S4           : missing tree"<<endl;
491      };      };
# Line 442  TTree *PamLevel2::LoadPamTrees(TFile *f, Line 494  TTree *PamLevel2::LoadPamTrees(TFile *f,
494      if(N && ND) {      if(N && ND) {
495          N->SetBranchAddress("NDLevel2", GetPointerToND());          N->SetBranchAddress("NDLevel2", GetPointerToND());
496          cout << "NeutronD     : set branch address NDLevel2"<<endl;          cout << "NeutronD     : set branch address NDLevel2"<<endl;
497          if(!Tout)Tout=O;          if(!Trout)Trout=O;
498          else Tout->AddFriend(N);          else Trout->AddFriend(N);
499      }else{      }else{
500          cout << "NeutronD     : missing tree"<<endl;          cout << "NeutronD     : missing tree"<<endl;
501      };      };
# Line 452  TTree *PamLevel2::LoadPamTrees(TFile *f, Line 504  TTree *PamLevel2::LoadPamTrees(TFile *f,
504      if(A && AC) {      if(A && AC) {
505          A->SetBranchAddress("AcLevel2", GetPointerToAc());          A->SetBranchAddress("AcLevel2", GetPointerToAc());
506          cout << "Anticounter  : set branch address AcLevel2"<<endl;          cout << "Anticounter  : set branch address AcLevel2"<<endl;
507          if(!Tout)Tout=O;          if(!Trout)Trout=O;
508          else Tout->AddFriend(A);          else Trout->AddFriend(A);
509      }else{      }else{
510          cout << "Anticounter  : missing tree"<<endl;          cout << "Anticounter  : missing tree"<<endl;
511      };      };
# Line 462  TTree *PamLevel2::LoadPamTrees(TFile *f, Line 514  TTree *PamLevel2::LoadPamTrees(TFile *f,
514          if(B && ORB) {          if(B && ORB) {
515                  B->SetBranchAddress("OrbitalInfo", GetPointerToOrb());                  B->SetBranchAddress("OrbitalInfo", GetPointerToOrb());
516                  cout << "OrbitalInfo  : set branch address OrbitalInfo"<<endl;                  cout << "OrbitalInfo  : set branch address OrbitalInfo"<<endl;
517                  if(!Tout)Tout=O;                  if(!Trout)Trout=O;
518                  else Tout->AddFriend(B);                  else Trout->AddFriend(B);
519          }else{          }else{
520                  cout << "OrbitalInfo  : missing tree"<<endl;                  cout << "OrbitalInfo  : missing tree"<<endl;
521          };          };
522            
523      return Tout;      return Trout;
524            
525  }  }
526  //--------------------------------------  //--------------------------------------
# Line 480  TTree *PamLevel2::LoadPamTrees(TFile *f, Line 532  TTree *PamLevel2::LoadPamTrees(TFile *f,
532   * @param f TFile pointer   * @param f TFile pointer
533   * @return Pointer to a TTree   * @return Pointer to a TTree
534   */   */
535  TTree *PamLevel2::LoadPamTrees(TFile *f){  /*TTree *PamLevel2::GetPamTree(TFile *f){
536            
537            
538          TTree *Tout =0;          TTree *Tout =0;
539                    
540          SetWhichTrees("+ALL");          SetWhichTrees("+ALL");
# Line 568  TTree *PamLevel2::LoadPamTrees(TFile *f) Line 621  TTree *PamLevel2::LoadPamTrees(TFile *f)
621            
622          return Tout;          return Tout;
623            
624  }  }*/
625  //--------------------------------------  //--------------------------------------
626  //  //
627  //  //
# Line 585  TList*  PamLevel2::GetListOfLevel2Files( Line 638  TList*  PamLevel2::GetListOfLevel2Files(
638          TString wdir = gSystem->WorkingDirectory();              TString wdir = gSystem->WorkingDirectory();    
639                    
640          if(ddir=="")ddir = wdir;          if(ddir=="")ddir = wdir;
641          TSystemDirectory *datadir = new TSystemDirectory(gSystem->BaseName(ddir),ddir);  //      TSystemDirectory *datadir = new TSystemDirectory(gSystem->BaseName(ddir),ddir);
642          cout << "Level2 data directory : "<< endl <<  ddir << endl;          cout << "Level2 data directory : "<< endl <<  ddir << endl;
643                                    
644          TList *contents  = new TList; // create output list          TList *contents  = new TList; // create output list
645          contents->SetOwner();          contents->SetOwner();
646            
647            char *fullpath;
648                                    
649          // if no input file list is given:                // if no input file list is given:      
650          if ( flisttxt != "" ){          if ( flisttxt != "" ){
651                                    
652                    if( !gSystem->IsFileInIncludePath(flisttxt,&fullpath) )return 0;
653                                    
654                  if( !gSystem->ChangeDirectory(ddir) )return 0;  //              flisttxt = gSystem->ConcatFileName(gSystem->DirName(flisttxt),gSystem->BaseName(flisttxt));
655                            flisttxt = fullpath;
                 flisttxt = gSystem->ConcatFileName(wdir,gSystem->BaseName(flisttxt));  
656                                    
657                    if( !gSystem->ChangeDirectory(ddir) )return 0;
658            
659                  cout <<"Input file list : "<< endl << flisttxt <<endl;                  cout <<"Input file list : "<< endl << flisttxt <<endl;
660                  ifstream in;                  ifstream in;
661                  in.open(flisttxt, ios::in);                  in.open(flisttxt, ios::in); //open input file list
662                  while (1) {                  while (1) {
663                          TString file;                          TString file;
664                          in >> file;                          in >> file;
665                          if (!in.good()) break;                          if (!in.good()) break;
                         char *fullpath;  
666                          if( gSystem->IsFileInIncludePath(file,&fullpath) ){                          if( gSystem->IsFileInIncludePath(file,&fullpath) ){
667  //                              contents->Add(new TSystemDirectory(fullpath,ddir)); // add file to the list  //                              contents->Add(new TSystemDirectory(fullpath,ddir)); // add file to the list
668  //                              contents->Add(new TSystemFile(fullpath,ddir)); // add file to the list  //                              contents->Add(new TSystemFile(fullpath,ddir)); // add file to the list
# Line 622  TList*  PamLevel2::GetListOfLevel2Files( Line 679  TList*  PamLevel2::GetListOfLevel2Files(
679                  cout << "Check for existing root files."<<endl;                  cout << "Check for existing root files."<<endl;
680  //              cout << "Warking directory: "<< gSystem->WorkingDirectory()<< endl;  //              cout << "Warking directory: "<< gSystem->WorkingDirectory()<< endl;
681                                    
682                    TSystemDirectory *datadir = new TSystemDirectory(gSystem->BaseName(ddir),ddir);
683                  TList *temp = datadir->GetListOfFiles();                  TList *temp = datadir->GetListOfFiles();
684  //              temp->Print();  //              temp->Print();
685  //              cout << "*************************************" << endl;  //              cout << "*************************************" << endl;
# Line 639  TList*  PamLevel2::GetListOfLevel2Files( Line 697  TList*  PamLevel2::GetListOfLevel2Files(
697                          };                          };
698                  }                  }
699                  delete temp;                  delete temp;
700                    delete datadir;
701                    
702          };          };
703          gSystem->ChangeDirectory(wdir);          gSystem->ChangeDirectory(wdir); // back to the working directory
704          cout << endl << "Selected files:" << endl;          cout << endl << "Selected files:" << endl;
705          contents->Print();          contents->Print();
706          cout << endl;          cout << endl;
707  //      cout << "Warking directory: "<< gSystem->WorkingDirectory()<< endl;  //      cout << "Working directory: "<< gSystem->WorkingDirectory()<< endl;
708          return contents;          return contents;
709  };  };
710  //--------------------------------------  //--------------------------------------
# Line 658  TList*  PamLevel2::GetListOfLevel2Files( Line 717  TList*  PamLevel2::GetListOfLevel2Files(
717   * @param detlist String to select trees to be included   * @param detlist String to select trees to be included
718   * @return Pointer to a TChain   * @return Pointer to a TChain
719   */   */
720  TChain *PamLevel2::LoadPamTrees(TList *fl, TString detlist="+ALL"){  TChain *PamLevel2::GetPamTree(TList *fl, TString detlist="+ALL"){
721    
722          TChain *Tout=0;  //      TChain *Tout=0;
723            if(Tout)Tout->Delete();
724            Tout = NULL;
725                    
726          SetWhichTrees(detlist);          SetWhichTrees(detlist);
727                    
# Line 700  TChain *PamLevel2::LoadPamTrees(TList *f Line 761  TChain *PamLevel2::LoadPamTrees(TList *f
761                  };                  };
762          }          }
763                    
764      // Tracker  /*    // Tracker
765          if(TRK) {          if(TRK) {
766                  T->SetBranchAddress("TrkLevel2", GetPointerToTrk());                  if(TRK_L1){
767                            T->SetBranchAddress("TrkLevel1", GetPointerToTrk(1));
768                            cout << "Tracker      : set branch address TrkLevel1"<<endl;
769                    };
770                    T->SetBranchAddress("TrkLevel2", GetPointerToTrk(2));
771                  cout << "Tracker      : set branch address TrkLevel2"<<endl;                  cout << "Tracker      : set branch address TrkLevel2"<<endl;
772                    
773                  if(!Tout)Tout=T;                  if(!Tout)Tout=T;
774          };          };
775                    
776          // Calorimeter          // Calorimeter
777          if(CAL) {          if(CAL) {
778                  C->SetBranchAddress("CaloLevel2", GetPointerToCalo());                  C->SetBranchAddress("CaloLevel2", GetPointerToCalo());
# Line 758  TChain *PamLevel2::LoadPamTrees(TList *f Line 824  TChain *PamLevel2::LoadPamTrees(TList *f
824                  else Tout->AddFriend("OrbitalInfo");                  else Tout->AddFriend("OrbitalInfo");
825          };          };
826            
827            cout<<endl<<" Number of entries: "<<Tout->GetEntries()<<endl<<endl;*/
828            
829                // Tracker
830            if(TRK) if(!Tout)Tout=T;
831                
832            // Calorimeter
833            if(CAL) {              
834                    if(!Tout)Tout=C;
835                    else Tout->AddFriend("Calorimeter");
836            };
837            
838        // ToF    
839            if(TOF) {
840                    if(!Tout)Tout=O;
841                    else Tout->AddFriend("ToF");
842            };
843        // Trigger
844            if(TRG) {
845                    if(!Tout)Tout=O;
846                    else Tout->AddFriend("Trigger");
847            };
848        // S4
849            if(S4) {
850                    if(!Tout)Tout=O;
851                    else Tout->AddFriend("S4");
852            };
853        // Neutron Detector
854            if(ND) {
855                    if(!Tout)Tout=O;
856                    else Tout->AddFriend("NeutronD");
857            };
858        // Anticounters
859            if(AC) {
860                    if(!Tout)Tout=O;
861                    else Tout->AddFriend("Anticounter");
862            };
863        // OrbitalInfo
864            if(ORB) {
865                    if(!Tout)Tout=O;
866                    else Tout->AddFriend("OrbitalInfo");
867            };
868            
869            cout<<endl<<" Number of entries: "<<Tout->GetEntries()<<endl<<endl;
870            
871            PamLevel2::SetBranchAddress();
872            
873          return Tout;          return Tout;
874    }
875    //--------------------------------------
876    //
877    //
878    //--------------------------------------
879    /**
880     * Set branch addresses for Pamela friend trees
881     */
882    void PamLevel2::SetBranchAddress(){
883        // Tracker
884            if(TRK) {
885                    if(TRK_L1){
886                            Tout->SetBranchAddress("TrkLevel1", GetPointerToTrk(1));
887                            cout << "Tracker      : set branch address TrkLevel1"<<endl;
888                    };
889                    Tout->SetBranchAddress("TrkLevel2", GetPointerToTrk(2));
890                    cout << "Tracker      : set branch address TrkLevel2"<<endl;
891            };
892                
893            // Calorimeter
894            if(CAL) {
895                    Tout->SetBranchAddress("CaloLevel2", GetPointerToCalo());
896                    cout << "Calorimeter  : set branch address CaloLevel2"<<endl;
897            };
898            
899        // ToF    
900            if(TOF) {
901                    Tout->SetBranchAddress("ToFLevel2", GetPointerToToF());
902                    cout << "ToF          : set branch address ToFLevel2"<<endl;
903            };
904        // Trigger
905            if(TRG) {
906                    Tout->SetBranchAddress("TrigLevel2", GetPointerToTrig());
907                    cout << "Trigger      : set branch address TrigLevel2"<<endl;
908            };
909        // S4
910            if(S4) {
911                    Tout->SetBranchAddress("S4Level2", GetPointerToS4());
912                    cout << "S4           : set branch address S4Level2"<<endl;
913            };
914        // Neutron Detector
915            if(ND) {
916                    Tout->SetBranchAddress("NDLevel2", GetPointerToND());
917                    cout << "NeutronD     : set branch address NDLevel2"<<endl;
918            };
919        // Anticounters
920            if(AC) {
921                    Tout->SetBranchAddress("AcLevel2", GetPointerToAc());
922                    cout << "Anticounter  : set branch address AcLevel2"<<endl;
923            };
924        // OrbitalInfo
925            if(ORB) {
926                    Tout->SetBranchAddress("OrbitalInfo", GetPointerToOrb());
927                    cout << "OrbitalInfo  : set branch address OrbitalInfo"<<endl;
928            };
929            
930    }
931    
932    //--------------------------------------
933    //
934    //
935    //--------------------------------------
936    void *PamLevel2::GetPointerTo(const char* c ){
937    //      cout << "objname "<< objname << endl;
938            TString objname = c;
939            if(!objname.CompareTo("TrkLevel1"))return &trk_l1_obj;
940            if(!objname.CompareTo("TrkLevel2"))return &trk_obj;
941            
942            return NULL;
943    };
944    //--------------------------------------
945    //
946    //
947    //--------------------------------------
948    /**
949     * Get the Run tree chain from a list of files.
950     * @param fl Pointer to a TList of TSystemFiles
951     * @return Pointer to a TChain
952     */
953    TChain *PamLevel2::GetRunTree(TList *fl){
954            
955            TChain *R = new TChain("Run");
956    
957            // loop over files and create chains    
958            TIter next(fl);
959            TSystemFile *questo = 0;
960            while ( (questo = (TSystemFile*) next()) ) {
961                    TString name =  questo->GetName();
962    //              cout << "File: "<< name << endl;
963                    if( CheckLevel2File(name) ){
964                            R->Add(name);
965                    };
966            }
967            
968            R->SetBranchAddress("RunInfo", GetPointerToRun());
969            cout << "Run         : set branch address RunInfo"<<endl;
970        
971            return R;
972        
973    }
974    //--------------------------------------
975    //
976    //
977    //--------------------------------------
978    /**
979     * Get the Run tree  from a file.
980     * @param f Pointer to a TFile
981     * @return Pointer to a TTree
982     */
983    TTree *PamLevel2::GetRunTree(TFile *f){
984    
985    
986            TTree *R = (TTree*)f->Get("Run");
987    
988            R->SetBranchAddress("RunInfo", GetPointerToRun());
989            cout << "Run         : set branch address RunInfo"<<endl;
990        
991            return R;
992            
993  }  }
994  //--------------------------------------  //--------------------------------------
# Line 774  void PamLevel2::SetWhichTrees(TString de Line 1004  void PamLevel2::SetWhichTrees(TString de
1004          if(detlist.Contains("+ALL", TString::kIgnoreCase)){          if(detlist.Contains("+ALL", TString::kIgnoreCase)){
1005                  CAL = true;                  CAL = true;
1006                  TRK = true;                  TRK = true;
1007                    TRK_L1 = false;
1008                  TRG = true;                  TRG = true;
1009                  TOF = true;                  TOF = true;
1010                  S4  = true;                  S4  = true;
# Line 783  void PamLevel2::SetWhichTrees(TString de Line 1014  void PamLevel2::SetWhichTrees(TString de
1014          }else if( detlist.Contains("-ALL", TString::kIgnoreCase) ){          }else if( detlist.Contains("-ALL", TString::kIgnoreCase) ){
1015                  CAL = false;                  CAL = false;
1016                  TRK = false;                  TRK = false;
1017                    TRK_L1 = false;
1018                  TRG = false;                  TRG = false;
1019                  TOF = false;                  TOF = false;
1020                  S4  = false;                  S4  = false;
# Line 797  void PamLevel2::SetWhichTrees(TString de Line 1029  void PamLevel2::SetWhichTrees(TString de
1029          if( detlist.Contains("-TRK", TString::kIgnoreCase) )TRK = false;          if( detlist.Contains("-TRK", TString::kIgnoreCase) )TRK = false;
1030          else if( detlist.Contains("+TRK", TString::kIgnoreCase) )TRK = true;          else if( detlist.Contains("+TRK", TString::kIgnoreCase) )TRK = true;
1031                    
1032            if( detlist.Contains("-TRK1", TString::kIgnoreCase) )TRK_L1 = false;
1033            else if( detlist.Contains("+TRK1", TString::kIgnoreCase) )TRK_L1 = true;
1034            
1035          if( detlist.Contains("-TRG", TString::kIgnoreCase) )TRG = false;          if( detlist.Contains("-TRG", TString::kIgnoreCase) )TRG = false;
1036          else if( detlist.Contains("+TRG", TString::kIgnoreCase) )TRG = true;          else if( detlist.Contains("+TRG", TString::kIgnoreCase) )TRG = true;
1037                    
# Line 823  void PamLevel2::SetWhichTrees(TString de Line 1058  void PamLevel2::SetWhichTrees(TString de
1058  /**  /**
1059   * Check if a file contains selected Pamela Level2 trees.   * Check if a file contains selected Pamela Level2 trees.
1060   * @param name File name   * @param name File name
1061   * @return Pointer to a TChain   * @return true if the file is ok.
1062   */   */
1063  Bool_t  PamLevel2::CheckLevel2File(TString name){  Bool_t  PamLevel2::CheckLevel2File(TString name){
1064                    
1065          Bool_t CAL__ok = false;          Bool_t CAL__ok = false;
1066          Bool_t TRK__ok = false;          Bool_t TRK__ok = false;
1067            Bool_t TRK_L1__ok = false;
1068          Bool_t TRG__ok = false;          Bool_t TRG__ok = false;
1069          Bool_t TOF__ok = false;          Bool_t TOF__ok = false;
1070          Bool_t S4__ok  = false;          Bool_t S4__ok  = false;
# Line 846  Bool_t  PamLevel2::CheckLevel2File(TStri Line 1082  Bool_t  PamLevel2::CheckLevel2File(TStri
1082          while( (key = (TKey*)next()) ){          while( (key = (TKey*)next()) ){
1083  //              cout << key->GetName() << endl;  //              cout << key->GetName() << endl;
1084                  if( !strcmp(key->GetName(),"Calorimeter") )CAL__ok = true;                  if( !strcmp(key->GetName(),"Calorimeter") )CAL__ok = true;
1085                  if( !strcmp(key->GetName(),"Tracker"    ) )TRK__ok = true;  //              if( !strcmp(key->GetName(),"Tracker"    ) )TRK__ok = true;
1086                  if( !strcmp(key->GetName(),"Trigger"    ) )TRG__ok = true;                  if( !strcmp(key->GetName(),"Trigger"    ) )TRG__ok = true;
1087                  if( !strcmp(key->GetName(),"ToF"        ) )TOF__ok = true;                  if( !strcmp(key->GetName(),"ToF"        ) )TOF__ok = true;
1088                  if( !strcmp(key->GetName(),"S4"         ) )S4__ok = true;                  if( !strcmp(key->GetName(),"S4"         ) )S4__ok = true;
# Line 854  Bool_t  PamLevel2::CheckLevel2File(TStri Line 1090  Bool_t  PamLevel2::CheckLevel2File(TStri
1090                  if( !strcmp(key->GetName(),"Anticounter") )AC__ok = true;                  if( !strcmp(key->GetName(),"Anticounter") )AC__ok = true;
1091                  if( !strcmp(key->GetName(),"OrbitalInfo") )ORB__ok = true;                  if( !strcmp(key->GetName(),"OrbitalInfo") )ORB__ok = true;
1092                  if( !strcmp(key->GetName(),"Run"        ) )RUN__ok = true;                  if( !strcmp(key->GetName(),"Run"        ) )RUN__ok = true;
1093                    
1094                    if( !strcmp(key->GetName(),"Tracker"    ) ){
1095                            TRK__ok = true;
1096                            TTree *T = (TTree*)f->Get("Tracker");
1097                            for(Int_t i=0; i<T->GetListOfBranches()->GetEntries(); i++){
1098                                    TString name = T->GetListOfBranches()->At(i)->GetName();
1099                                    if( !name.CompareTo("TrkLevel1") )TRK_L1__ok=true;
1100                            };
1101                    };
1102    
1103          };          };
1104                                    
1105          lk->Delete();          lk->Delete();
# Line 872  Bool_t  PamLevel2::CheckLevel2File(TStri Line 1118  Bool_t  PamLevel2::CheckLevel2File(TStri
1118                  cout << "File: "<< f->GetName() <<" discarded ---- Missing Tracker tree"<< endl;                  cout << "File: "<< f->GetName() <<" discarded ---- Missing Tracker tree"<< endl;
1119                  FLAG = false;                  FLAG = false;
1120          };          };
1121            if(TRK_L1 && !TRK_L1__ok){
1122                    cout << "File: "<< f->GetName() <<" discarded ---- Missing Tracker Level1 Branch"<< endl;
1123                    FLAG = false;
1124            };
1125          if(TRG && !TRG__ok){          if(TRG && !TRG__ok){
1126                  cout << "File: "<< f->GetName() <<" discarded ---- Missing Trigger tree"<< endl;                  cout << "File: "<< f->GetName() <<" discarded ---- Missing Trigger tree"<< endl;
1127                  FLAG = false;                  FLAG = false;

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

  ViewVC Help
Powered by ViewVC 1.1.23