/[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.10 by pam-fi, Wed Dec 6 11:07:35 2006 UTC revision 1.11 by pam-fi, Mon Dec 11 17:49:03 2006 UTC
# Line 507  PamTrack *PamLevel2::GetTrackImage(int i Line 507  PamTrack *PamLevel2::GetTrackImage(int i
507   * @param detlist String to select trees to be included   * @param detlist String to select trees to be included
508   * @return Pointer to a TTree   * @return Pointer to a TTree
509   */   */
510  TTree *PamLevel2::GetPamTree(TFile *f, TString detlist="+ALL"){  TTree *PamLevel2::GetPamTree(TFile *f, TString detlist ){
511    
512  //      cout << "WARNING!!! -- obsolete method -- \n";      if( !detlist.IsNull() ) SetWhichTrees(detlist);
513  //      cout << "better use TChain *PamLevel2::GetPamTree(TList*, TString) \n";      else                    GetWhichTrees(f);
514    
     SetWhichTrees(detlist);  
515      TTree *Trout =0;      TTree *Trout =0;
516    
   
517      TString fname = f->GetName();      TString fname = f->GetName();
518      if(!CheckLevel2File(fname))return NULL;      if(!CheckLevel2File(fname))return NULL;
519    
520            UInt_t *found=0;    
521    
522  // Tracker  // Tracker
523      TTree *T = (TTree*)f->Get("Tracker");      TTree *T = (TTree*)f->Get("Tracker");
524      if(T && (TRK2||TRK1||TRKh)) {      if(T && (TRK2||TRK1||TRKh)) {
525          if(TRK2)T->SetBranchAddress("TrkLevel2", GetPointerTo("TrkLevel2"));          if(TRK2)T->SetBranchAddress("TrkLevel2", GetPointerTo("TrkLevel2"));
526            else    T->SetBranchStatus("TrkLevel2",0,found);
527          if(TRK2)cout << "Tracker      : set branch address TrkLevel2"<<endl;          if(TRK2)cout << "Tracker      : set branch address TrkLevel2"<<endl;
528          if(TRK1)T->SetBranchAddress("TrkLevel1", GetPointerTo("TrkLevel1"));          if(TRK1)T->SetBranchAddress("TrkLevel1", GetPointerTo("TrkLevel1"));
529            else    T->SetBranchStatus("TrkLevel1",0,found);
530          if(TRK1)cout << "Tracker      : set branch address TrkLevel1"<<endl;          if(TRK1)cout << "Tracker      : set branch address TrkLevel1"<<endl;
531          if(TRKh)T->SetBranchAddress("TrkHough", GetPointerTo("TrkHough"));          if(TRKh)T->SetBranchAddress("TrkHough", GetPointerTo("TrkHough"));
532            else    T->SetBranchStatus("TrkHough",0,found);
533          if(TRKh)cout << "Tracker      : set branch address TrkHough"<<endl;          if(TRKh)cout << "Tracker      : set branch address TrkHough"<<endl;
534          if(!Trout)Trout=T;          if(!Trout)Trout=T;
535          else Trout->AddFriend(T);          else Trout->AddFriend(T);
# Line 538  TTree *PamLevel2::GetPamTree(TFile *f, T Line 540  TTree *PamLevel2::GetPamTree(TFile *f, T
540      TTree *C = (TTree*)f->Get("Calorimeter");      TTree *C = (TTree*)f->Get("Calorimeter");
541      if(C && (CAL2||CAL1)) {      if(C && (CAL2||CAL1)) {
542          if(CAL2)C->SetBranchAddress("CaloLevel2", GetPointerTo("CaloLevel2"));          if(CAL2)C->SetBranchAddress("CaloLevel2", GetPointerTo("CaloLevel2"));
543            else    C->SetBranchStatus("CaloLevel2",0,found);
544          if(CAL2)cout << "Calorimeter  : set branch address CaloLevel2"<<endl;          if(CAL2)cout << "Calorimeter  : set branch address CaloLevel2"<<endl;
545          if(CAL1)C->SetBranchAddress("CaloLevel1", GetPointerTo("CaloLevel1"));          if(CAL1)C->SetBranchAddress("CaloLevel1", GetPointerTo("CaloLevel1"));
546            else    C->SetBranchStatus("CaloLevel1",0,found);
547          if(CAL1)cout << "Calorimeter  : set branch address CaloLevel1"<<endl;          if(CAL1)cout << "Calorimeter  : set branch address CaloLevel1"<<endl;
548          if(!Trout)Trout=C;          if(!Trout)Trout=C;
549          else Trout->AddFriend(C);          else Trout->AddFriend(C);
# Line 597  TTree *PamLevel2::GetPamTree(TFile *f, T Line 601  TTree *PamLevel2::GetPamTree(TFile *f, T
601          cout << "Anticounter  : missing tree"<<endl;          cout << "Anticounter  : missing tree"<<endl;
602      };      };
603      // Orbital Info      // Orbital Info
604          TTree *B = (TTree*)f->Get("OrbitalInfo");      TTree *B = (TTree*)f->Get("OrbitalInfo");
605          if(B && ORB) {      if(B && ORB) {
606                  B->SetBranchAddress("OrbitalInfo", GetPointerTo("OrbitalInfo"));          B->SetBranchAddress("OrbitalInfo", GetPointerTo("OrbitalInfo"));
607                  cout << "OrbitalInfo  : set branch address OrbitalInfo"<<endl;          cout << "OrbitalInfo  : set branch address OrbitalInfo"<<endl;
608                  if(!Trout)Trout=O;          if(!Trout)Trout=O;
609                  else Trout->AddFriend(B);          else Trout->AddFriend(B);
610          }else{      }else{
611                  cout << "OrbitalInfo  : missing tree"<<endl;          cout << "OrbitalInfo  : missing tree"<<endl;
612          };      };
613        
614        cout<<endl<<" Number of entries: "<<Trout->GetEntries()<<endl<<endl;
615            
616          cout<<endl<<" Number of entries: "<<Trout->GetEntries()<<endl<<endl;      return Trout;
                   
         return Trout;  
617            
618  }  }
619  //--------------------------------------  //--------------------------------------
# Line 639  TList*  PamLevel2::GetListOfLevel2Files( Line 643  TList*  PamLevel2::GetListOfLevel2Files(
643      // if no input file list is given:        // if no input file list is given:  
644      if ( flisttxt != "" ){      if ( flisttxt != "" ){
645                    
646          if( !gSystem->IsFileInIncludePath(flisttxt,&fullpath) )return 0;          if( !gSystem->IsFileInIncludePath(flisttxt,&fullpath) ){
647                        cout <<"File "<<flisttxt<<" not found"<<endl;
648                return 0;
649            }      
650  //              flisttxt = gSystem->ConcatFileName(gSystem->DirName(flisttxt),gSystem->BaseName(flisttxt));  //              flisttxt = gSystem->ConcatFileName(gSystem->DirName(flisttxt),gSystem->BaseName(flisttxt));
651          flisttxt = fullpath;          flisttxt = fullpath;
652                    
653          if( !gSystem->ChangeDirectory(ddir) )return 0;          if( !gSystem->ChangeDirectory(ddir) ){
654                cout << "Cannot change directory : "<<ddir<<endl;
655                return 0;
656            }
657                    
658          cout <<"Input file list : " << flisttxt <<endl;          cout <<"Input file list : " << flisttxt <<endl;
659          ifstream in;          ifstream in;
# Line 717  TList*  PamLevel2::GetListOfLevel2Files( Line 726  TList*  PamLevel2::GetListOfLevel2Files(
726   * @param detlist String to select trees to be included   * @param detlist String to select trees to be included
727   * @return Pointer to a TChain   * @return Pointer to a TChain
728   */   */
729  TChain *PamLevel2::GetPamTree(TList *fl, TString detlist="+ALL"){  TChain *PamLevel2::GetPamTree(TList *fl, TString detlist ){
   
 //      TChain *Tout=0;  
 //    if(Tout)Tout->Delete();  
 //    Tout = NULL;  
730            
731      TChain *Tout =0;      TChain *Trout =0;
732    
733      SetWhichTrees(detlist);      if( !detlist.IsNull() )SetWhichTrees(detlist);
734        
735            
736      TChain *T = 0;            TChain *T = 0;      
737      TChain *C = 0;      TChain *C = 0;
# Line 737  TChain *PamLevel2::GetPamTree(TList *fl, Line 743  TChain *PamLevel2::GetPamTree(TList *fl,
743      TChain *B = 0;      TChain *B = 0;
744            
745      if(TRK2||TRK1||TRKh) T = new TChain("Tracker");          if(TRK2||TRK1||TRKh) T = new TChain("Tracker");    
746      if(CAL2||CAL1) C = new TChain("Calorimeter");      if(CAL2||CAL1)       C = new TChain("Calorimeter");
747      if(TOF) O = new TChain("ToF");      if(TOF)              O = new TChain("ToF");
748      if(TRG) R = new TChain("Trigger");      if(TRG)              R = new TChain("Trigger");
749      if(S4)  S = new TChain("S4");      if(S4)               S = new TChain("S4");
750      if(ND)  N = new TChain("NeutronD");      if(ND)               N = new TChain("NeutronD");
751      if(AC)  A = new TChain("Anticounter");      if(AC)               A = new TChain("Anticounter");
752      if(ORB) B = new TChain("OrbitalInfo");      if(ORB)              B = new TChain("OrbitalInfo");
753            
754      // loop over files and create chains              // loop over files and create chains        
755      TIter next(fl);      TIter next(fl);
756      TSystemFile *questo = 0;      TSystemFile *questo = 0;
757      while ( (questo = (TSystemFile*) next()) ) {      while ( (questo = (TSystemFile*) next()) ) {
758          TString name =  questo->GetName();          TString name =  questo->GetName();
759  //              cout << "File: "<< name << endl;  //      cout << "File: "<< name << endl;
760          if( CheckLevel2File(name) ){          if( CheckLevel2File(name) ){
761              if(TRK2||TRK1||TRKh) T->Add(name);              if(TRK2||TRK1||TRKh) T->Add(name);
762              if(CAL1||CAL2) C->Add(name);              if(CAL1||CAL2)       C->Add(name);
763              if(TOF) O->Add(name);              if(TOF)              O->Add(name);
764              if(TRG) R->Add(name);              if(TRG)              R->Add(name);
765              if(S4)  S->Add(name);              if(S4)               S->Add(name);
766              if(ND)  N->Add(name);              if(ND)               N->Add(name);
767              if(AC)  A->Add(name);              if(AC)               A->Add(name);
768              if(ORB) B->Add(name);              if(ORB)              B->Add(name);
769          };          };
770      }      }
771            
772      cout << "done chain \n";      cout << "done chain \n";
773        
774        UInt_t *found=0;
775    // Tracker
776        if(T && (TRK2||TRK1||TRKh)) {
777            if(TRK2)T->SetBranchAddress("TrkLevel2", GetPointerTo("TrkLevel2"));
778            else    T->SetBranchStatus("TrkLevel2",0,found);
779            if(TRK2)cout << "Tracker      : set branch address TrkLevel2"<<endl;
780            if(TRK1)T->SetBranchAddress("TrkLevel1", GetPointerTo("TrkLevel1"));
781            else    T->SetBranchStatus("TrkLevel1",0,found);
782            if(TRK1)cout << "Tracker      : set branch address TrkLevel1"<<endl;
783            if(TRKh)T->SetBranchAddress("TrkHough", GetPointerTo("TrkHough"));
784            else    T->SetBranchStatus("TrkHough",0,found);
785            if(TRKh)cout << "Tracker      : set branch address TrkHough"<<endl;
786            if(!Trout)Trout=T;
787            else Trout->AddFriend("Tracker");
788        }else{
789            cout << "Tracker      : missing tree"<<endl;
790        };
791      // Calorimeter      // Calorimeter
792      if(CAL2||CAL1) {                  if(C && (CAL2||CAL1)) {
793          if(!Tout)Tout=C;          if(CAL2)C->SetBranchAddress("CaloLevel2", GetPointerTo("CaloLevel2"));
794          else Tout->AddFriend("Calorimeter");          else    C->SetBranchStatus("CaloLevel2",0,found);
795            if(CAL2)cout << "Calorimeter  : set branch address CaloLevel2"<<endl;
796            if(CAL1)C->SetBranchAddress("CaloLevel1", GetPointerTo("CaloLevel1"));
797            else    C->SetBranchStatus("CaloLevel1",0,found);
798            if(CAL1)cout << "Calorimeter  : set branch address CaloLevel1"<<endl;
799            if(!Trout)Trout=C;
800            else Trout->AddFriend("Calorimeter");
801        }else{
802            cout << "Calorimeter  : missing tree"<<endl;
803      };      };
804      // ToF          // ToF    
805      if(TOF) {      if(O && TOF) {
806          if(!Tout)Tout=O;          O->SetBranchAddress("ToFLevel2", GetPointerTo("ToFLevel2"));
807          else Tout->AddFriend("ToF");          cout << "ToF          : set branch address ToFLevel2"<<endl;
808            if(!Trout)Trout=O;
809            else Trout->AddFriend("ToF");
810        }else{
811            cout << "ToF         : missing tree"<<endl;
812      };      };
     // Tracker  
     if(TRK2||TRK1||TRKh){  
         if(!Tout)Tout=T;  
         else Tout->AddFriend("Tracker");  
     }  
813      // Trigger      // Trigger
814      if(TRG) {      if(R && TRG) {
815          if(!Tout)Tout=R;          R->SetBranchAddress("TrigLevel2", GetPointerTo("TrigLevel2"));
816          else Tout->AddFriend("Trigger");          cout << "Trigger      : set branch address TrigLevel2"<<endl;
817            if(!Trout)Trout=O;
818            else Trout->AddFriend("Trigger");
819        }else{
820            cout << "Trigger      : missing tree"<<endl;
821      };      };
822      // S4      // S4
823      if(S4) {      if(S && S4) {
824          if(!Tout)Tout=S;          S->SetBranchAddress("S4Level2", GetPointerTo("S4Level2"));
825          else Tout->AddFriend("S4");          cout << "S4           : set branch address S4Level2"<<endl;
826            if(!Trout)Trout=O;
827            else Trout->AddFriend("S4");
828        }else{
829            cout << "S4           : missing tree"<<endl;
830      };      };
831      // Neutron Detector      // Neutron Detector
832      if(ND) {      if(N && ND) {
833          if(!Tout)Tout=N;          N->SetBranchAddress("NDLevel2", GetPointerTo("NDLevel2"));
834          else Tout->AddFriend("NeutronD");          cout << "NeutronD     : set branch address NDLevel2"<<endl;
835            if(!Trout)Trout=O;
836            else Trout->AddFriend("NeutronD");
837        }else{
838            cout << "NeutronD     : missing tree"<<endl;
839      };      };
840      // Anticounters      // Anticounters
841      if(AC) {      if(A && AC) {
842          if(!Tout)Tout=A;          A->SetBranchAddress("AcLevel2", GetPointerTo("AcLevel2"));
843          else Tout->AddFriend("Anticounter");          cout << "Anticounter  : set branch address AcLevel2"<<endl;
844            if(!Trout)Trout=O;
845            else Trout->AddFriend("Anticounter");
846        }else{
847            cout << "Anticounter  : missing tree"<<endl;
848      };      };
849      // OrbitalInfo      // Orbital Info
850      if(ORB) {      if(B && ORB) {
851          if(!Tout)Tout=B;          B->SetBranchAddress("OrbitalInfo", GetPointerTo("OrbitalInfo"));
852          else Tout->AddFriend("OrbitalInfo");          cout << "OrbitalInfo  : set branch address OrbitalInfo"<<endl;
853            if(!Trout)Trout=O;
854            else Trout->AddFriend("OrbitalInfo");
855        }else{
856            cout << "OrbitalInfo  : missing tree"<<endl;
857      };      };
858            
859    //    cout<<endl<<" Number of entries: "<<Trout->GetEntries()<<endl<<endl;
860    
861        
862    //     // Tracker
863    //     if(TRK2||TRK1||TRKh){
864    //      if(!Tout)Tout=T;
865    //      else Tout->AddFriend("Tracker");
866    //     }
867    //     // Calorimeter
868    //     if(CAL2||CAL1) {        
869    //      if(!Tout)Tout=C;
870    //      else Tout->AddFriend("Calorimeter");
871    //     };
872    //     // ToF    
873    //     if(TOF) {
874    //      if(!Tout)Tout=O;
875    //      else Tout->AddFriend("ToF");
876    //     };
877    //     // Trigger
878    //     if(TRG) {
879    //      if(!Tout)Tout=R;
880    //      else Tout->AddFriend("Trigger");
881    //     };
882    //     // S4
883    //     if(S4) {
884    //      if(!Tout)Tout=S;
885    //      else Tout->AddFriend("S4");
886    //     };
887    //     // Neutron Detector
888    //     if(ND) {
889    //      if(!Tout)Tout=N;
890    //      else Tout->AddFriend("NeutronD");
891    //     };
892    //     // Anticounters
893    //     if(AC) {
894    //      if(!Tout)Tout=A;
895    //      else Tout->AddFriend("Anticounter");
896    //     };
897    //     // OrbitalInfo
898    //     if(ORB) {
899    //      if(!Tout)Tout=B;
900    //      else Tout->AddFriend("OrbitalInfo");
901    //     };
902        
903  //    cout<<endl<<" Number of entries: "<<Tout->GetEntries()<<endl<<endl;  //    cout<<endl<<" Number of entries: "<<Tout->GetEntries()<<endl<<endl;
904            
905  //    if( Tout->GetEntries() )PamLevel2::SetBranchAddress();  //    if( Tout->GetEntries() )PamLevel2::SetBranchAddress( Tout );
     if( Tout->GetEntries() )PamLevel2::SetBranchAddress( Tout );  
906            
907      return Tout;      return Trout;
908  }  }
909    
910    
# Line 913  void PamLevel2::SetBranchAddress(TChain Line 1006  void PamLevel2::SetBranchAddress(TChain
1006    
1007      // Tracker      // Tracker
1008       if(TRK2) {       if(TRK2) {
1009          t->SetBranchAddress("TrkLevel2", this->GetPointerTo("TrkLevel2"));          t->SetBranchAddress("TrkLevel2", GetPointerTo("TrkLevel2"));
1010          cout << "Tracker      : set branch address TrkLevel2"<<endl;          cout << "Tracker      : set branch address TrkLevel2"<<endl;
1011      };      };
1012      if(TRK1) {      if(TRK1) {
# Line 968  void PamLevel2::SetBranchAddress(TChain Line 1061  void PamLevel2::SetBranchAddress(TChain
1061            
1062  }  }
1063    
 // void* PamLevel2::GetPointerToTrk()  {return &trk2_obj;};  
 // void* PamLevel2::GetPointerToTrk(int s){  
 //     switch (s) {  
 //     case 1:  return &trk1_obj;  
 //     case 2:  return &trk2_obj;  
 //     case 3:  return &trkh_obj;  
 //     default: return 0;  
 //     };  
 // };  
 // void* PamLevel2::GetPointerToCalo() {return &calo2_obj; };  
 // void*       GetPointerToCalo(int s){  
 //     switch (s) {  
 //     case 1:  return &calo1_obj;  
 //     case 2:  return &calo2_obj;  
 //     default: return 0;  
 //     };  
 // };  
 // void*       GetPointerToToF()  {return &tof_obj;  };  
 // void*       GetPointerTo("TrigLevel2") {return &trig_obj; };  
 // void*       GetPointerTo("S4Level2")   {return &s4_obj;   };  
 // void*       GetPointerTo("NDLevel2")   {return &nd_obj;   };  
 // void*       GetPointerTo("AcLevel2")   {return &ac_obj;   };  
 // void*       GetPointerTo("OrbitalInfo")  {return &orb_obj;  };  
 // void*       GetPointerTo("RunInfo")  {return &run_obj;  };  
1064    
1065  //--------------------------------------  //--------------------------------------
1066  //  //
# Line 1118  void PamLevel2::SetWhichTrees(TString de Line 1187  void PamLevel2::SetWhichTrees(TString de
1187          TRKh=false;          TRKh=false;
1188      }      }
1189  //  -------------------------------------------------------------------------  //  -------------------------------------------------------------------------
   
   
       
 //     if( detlist.Contains("-TRK", TString::kIgnoreCase) )TRK2 = false;  
 //     else if( detlist.Contains("+TRK", TString::kIgnoreCase) )TRK2 = true;  
       
 //     if( detlist.Contains("-TRK1", TString::kIgnoreCase) )TRK1 = false;  
 //     else if( detlist.Contains("+TRK1", TString::kIgnoreCase) )TRK1 = true;  
   
 //     if( detlist.Contains("-TRKh", TString::kIgnoreCase) )TRKh = false;  
 //     else if( detlist.Contains("+TRKh", TString::kIgnoreCase) )TRKh = true;  
1190            
1191      if( detlist.Contains("-TRG", TString::kIgnoreCase) )TRG = false;      if( detlist.Contains("-TRG", TString::kIgnoreCase) )TRG = false;
1192      else if( detlist.Contains("+TRG", TString::kIgnoreCase) )TRG = true;      else if( detlist.Contains("+TRG", TString::kIgnoreCase) )TRG = true;
# Line 1147  void PamLevel2::SetWhichTrees(TString de Line 1205  void PamLevel2::SetWhichTrees(TString de
1205            
1206      if( detlist.Contains("-ORB", TString::kIgnoreCase) )ORB = false;      if( detlist.Contains("-ORB", TString::kIgnoreCase) )ORB = false;
1207      else if( detlist.Contains("+ORB", TString::kIgnoreCase) )ORB = true;      else if( detlist.Contains("+ORB", TString::kIgnoreCase) )ORB = true;
1208    
1209        cout<< "Set detector list --> ";
1210        if(TRK1)cout<<"TRK1 ";
1211        if(TRK2)cout<<"TRK2 ";
1212        if(TRKh)cout<<"TRKH ";
1213        if(CAL1)cout<<"CAL1 ";
1214        if(CAL2)cout<<"CAL2 ";
1215        if(TOF)cout<<"TOF ";
1216        if(TRG)cout<<"TRG ";
1217        if(AC)cout<<"AC ";
1218        if(ND)cout<<"ND ";
1219        if(S4)cout<<"S4 ";
1220        if(ORB)cout<<"ORB ";
1221        cout << endl;
1222            
1223  };  };
1224    
1225    
1226    /**
1227     * Set tree/branch detector flags from the content of a tree
1228     */
1229    void  PamLevel2::GetWhichTrees(TFile* f){
1230            
1231    
1232        // -----------
1233        // reset flags
1234        // -----------
1235        Bool_t CAL1   = false;    
1236        Bool_t CAL2   = false;    
1237        Bool_t TRK2   = false;    
1238        Bool_t TRK1   = false;    
1239        Bool_t TRKh   = false;    
1240        Bool_t TRG    = false;    
1241        Bool_t TOF    = false;    
1242        Bool_t S4     = false;    
1243        Bool_t ND     = false;    
1244        Bool_t AC     = false;    
1245        Bool_t ORB    = false;    
1246        
1247        Bool_t RUN    = false;
1248            
1249        cout << "Checking file: "<<f->GetName()<<endl;
1250        if( !f || f->IsZombie() ){
1251            cout << "File: "<< f->GetName() <<" Non valid root file"<< endl;
1252            return;
1253        }
1254    
1255        TList *lk = f->GetListOfKeys();
1256        TIter next(lk);
1257        TKey *key =0;
1258    
1259        Int_t nev = 0;
1260    
1261        while( (key = (TKey*)next()) ){
1262            
1263            if( !strcmp(key->GetName(),"Run"        ) )RUN = true;
1264    
1265            //=========================================================    
1266            if( !strcmp(key->GetName(),"Trigger"    ) ){
1267                TRG = true;
1268                Int_t nevt = ((TTree*)f->Get("Trigger"))->GetEntries();
1269                if( nev && nevt!=nev){
1270                    cout << "File: "<< f->GetName() <<" Trigger tree has "<<nevt<<" events instead of "<<nev<< endl;
1271                    TRG = false;
1272                }else nev=nevt;
1273            }
1274            //=========================================================    
1275            if( !strcmp(key->GetName(),"ToF"        ) ){
1276                TOF = true;
1277                Int_t nevt = ((TTree*)f->Get("ToF"))->GetEntries();
1278                if( nev && nevt!=nev){
1279                    cout << "File: "<< f->GetName() <<"     ToF tree has "<<nevt<<" events instead of "<<nev<< endl;
1280                    TOF = false;
1281                }else nev=nevt;
1282            }
1283            //=========================================================  
1284            if( !strcmp(key->GetName(),"S4"         ) ){
1285                S4 = true;
1286                Int_t nevt = ((TTree*)f->Get("S4"))->GetEntries();
1287                if( nev && nevt!=nev){
1288                    cout << "File: "<< f->GetName() <<"      S4 tree has "<<nevt<<" events instead of "<<nev<< endl;
1289                    S4 = false;
1290                }else nev=nevt;
1291            }
1292            //=========================================================  
1293    
1294            if( !strcmp(key->GetName(),"NeutronD"   ) ){
1295                ND = true;
1296                Int_t nevt = ((TTree*)f->Get("NeutronD"))->GetEntries();
1297                if( nev && nevt!=nev){
1298                    cout << "File: "<< f->GetName() <<"NeutronD tree has "<<nevt<<" events instead of "<<nev<< endl;
1299                    ND =false;
1300                }else nev=nevt;
1301            }      
1302            //=========================================================  
1303            if( !strcmp(key->GetName(),"Anticounter") ){
1304                AC = true;
1305                Int_t nevt = ((TTree*)f->Get("Anticounter"))->GetEntries();
1306                if( nev && nevt!=nev){
1307                    cout << "File: "<< f->GetName() <<" Anticounter tree has "<<nevt<<" events instead of "<<nev<< endl;
1308                    AC =false;
1309                }else nev=nevt;
1310            }
1311            //=========================================================  
1312            if( !strcmp(key->GetName(),"OrbitalInfo") ){
1313                ORB = true;
1314                Int_t nevt = ((TTree*)f->Get("OrbitalInfo"))->GetEntries();
1315                if( nev && nevt!=nev){
1316                    cout << "File: "<< f->GetName() <<" OrbitalInfo tree has "<<nevt<<" events instead of "<<nev<< endl;
1317                    ORB = false;
1318                }else nev=nevt;
1319            }
1320            //=========================================================  
1321            if( !strcmp(key->GetName(),"Tracker"    ) ){
1322                TTree *T = (TTree*)f->Get("Tracker");
1323                for(Int_t i=0; i<T->GetListOfBranches()->GetEntries(); i++){
1324                    TString name = T->GetListOfBranches()->At(i)->GetName();
1325                    if( !name.CompareTo("TrkLevel1") )TRK1=true;
1326                    if( !name.CompareTo("TrkLevel2") )TRK2=true;
1327                    if( !name.CompareTo("TrkHough") )TRKh=true;
1328                };      
1329                Int_t nevt = T->GetEntries();
1330                if( nev && nevt!=nev){
1331                    cout << "File: "<< f->GetName() <<" Tracker tree has "<<nevt<<" events instead of "<<nev<< endl;
1332                    TRK1 = false;
1333                    TRK2 = false;
1334                    TRKh = false;
1335                }else nev=nevt;
1336                T->Delete();
1337            };
1338            //=========================================================  
1339            if( !strcmp(key->GetName(),"Calorimeter"    ) ){
1340                TTree *T = (TTree*)f->Get("Calorimeter");
1341                for(Int_t i=0; i<T->GetListOfBranches()->GetEntries(); i++){
1342                    TString name = T->GetListOfBranches()->At(i)->GetName();
1343                    if( !name.CompareTo("CaloLevel1") )CAL1=true;
1344                    if( !name.CompareTo("CaloLevel2") )CAL2=true;
1345                };    
1346                Int_t nevt = T->GetEntries();
1347                if( nev && nevt!=nev){
1348                    cout << "File: "<< f->GetName() <<"  Calorimeter tree has "<<nevt<<" events instead of "<<nev<< endl;
1349                    CAL1 = false;
1350                    CAL2 = false;
1351                }else nev=nevt;
1352                T->Delete();
1353            };      
1354    
1355        };
1356        
1357        lk->Delete();
1358          
1359        return ;
1360            
1361    };
1362    
1363    
1364  //--------------------------------------  //--------------------------------------
1365  //  //
1366  //  //
# Line 1384  Bool_t  PamLevel2::CheckLevel2File(TStri Line 1596  Bool_t  PamLevel2::CheckLevel2File(TStri
1596  /**  /**
1597   * Create clone-trees   * Create clone-trees
1598   */   */
1599  void PamLevel2::CreateCloneTrees( TChain *fChain ){  void PamLevel2::CreateCloneTrees0( TChain *fChain, TFile *ofile ){
1600    
1601      cout << "+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+" <<endl;      cout << "+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+" <<endl;
1602      cout << "Create clones of PAMELA trees "<<endl;      cout << "Create clones of PAMELA trees "<<endl;
# Line 1400  void PamLevel2::CreateCloneTrees( TChain Line 1612  void PamLevel2::CreateCloneTrees( TChain
1612      TList *li = fChain->GetListOfFriends();      TList *li = fChain->GetListOfFriends();
1613      TIter next(li);      TIter next(li);
1614      TFriendElement* T_friend=0;      TFriendElement* T_friend=0;
1615        ofile->cd();
1616      while( (T_friend = (TFriendElement*)next()) ){      while( (T_friend = (TFriendElement*)next()) ){
1617  //      cout<<T_friend->IsA()->GetName()<<" "<<T_friend->GetName()<<hex << T_friend->GetTree() << dec<<endl;  //      cout<<T_friend->IsA()->GetName()<<" "<<T_friend->GetName()<<hex << T_friend->GetTree() << dec<<endl;
1618  //      cout<<T_friend->GetTree()->GetName()<< endl;  //      cout<<T_friend->GetTree()->GetName()<< endl;
1619          tree_clone[i] = T_friend->GetTree()->CloneTree(0);                tree_clone[i] = T_friend->GetTree()->CloneTree(0);
1620            tree_clone[i]->SetAutoSave(1000000);
1621          name =  tree_clone[i]->GetName();          name =  tree_clone[i]->GetName();
1622          name.Append("_clone");          name.Append("_clone");
1623  //      tree_clone[i]->SetName(name.Data());  //      tree_clone[i]->SetName(name.Data());
# Line 1415  void PamLevel2::CreateCloneTrees( TChain Line 1629  void PamLevel2::CreateCloneTrees( TChain
1629    
1630  }  }
1631    
1632  // /**  /**
1633  //  * Create clone-trees   * Create clone-trees
1634  //  */   */
1635  // void PamLevel2::CreateCloneTrees(){  void PamLevel2::CreateCloneTrees(TFile *ofile){
1636    
1637  //     cout << "+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+" <<endl;      ofile->cd();
1638  //     cout << "Create new PAMELA trees "<<endl;  
1639        cout << "+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+" <<endl;
1640        cout << "Create new PAMELA trees "<<endl;
1641                    
1642  //     if(TRK1||TRK2||TRKh){      Int_t i=0;
 //      T_clone = new TTree("Tracker_clone","PAMELA tracker level2 data ");      
 //      if(TRK1) {  
 //          trk1_clone = new TrkLevel1();  
 //          T_clone->Branch("TrkLevel1","TrkLevel1", GetPointerTo("TrkLevel1"));  
 //          T_clone->BranchRef();  
 //          cout << "Tracker      : branch TrkLevel1"<<endl;  
 //      };  
 //      if(TRK2) {  
 //          trk2_clone = new TrkLevel2();  
 //          T_clone->Branch("TrkLevel2", "TrkLevel2",GetPointerTo("TrkLevel2"));  
 //          cout << "Tracker      : branch TrkLevel2"<<endl;          
 //      };  
 //      if(TRKh) {  
 //          trkh_clone = new TrkHough();  
 //          T_clone->Branch("TrkHough","TrkHough", GetPointerTo("TrkHough"));  
 //          cout << "Tracker      : branch TrkHough"<<endl;  
 //      };  
 //      cout << hex << T_clone << dec << endl;  
 //     }  
1643    
1644  //     // Calorimeter      if(TRK1||TRK2||TRKh){
1645  //     if(CAL1||CAL2){          tree_clone[i] = new TTree("Tracker","PAMELA tracker level2 data ");    
1646  //      C_clone = new TTree("Calorimeter_clone","PAMELA calorimeter level2 data ");              if(TRK1) {
1647  //      if(CAL1) {              tree_clone[i]->Branch("TrkLevel1","TrkLevel1", GetPointerTo("TrkLevel1"));
1648  //          calo1_clone = new CaloLevel1();              tree_clone[i]->BranchRef();
1649  //          C_clone->Branch("CaloLevel1", "CaloLevel1", GetPointerTo("CaloLevel1"));              cout << "Tracker      : branch TrkLevel1"<<endl;
1650  //          cout << "Calorimeter  : branch CaloLevel1"<<endl;          };
1651  //      };          if(TRK2) {
1652  //      if(CAL2) {              tree_clone[i]->Branch("TrkLevel2", "TrkLevel2",GetPointerTo("TrkLevel2"));
1653  //          calo2_clone = new CaloLevel2();              cout << "Tracker      : branch TrkLevel2"<<endl;        
1654  //          C_clone->Branch("CaloLevel2","CaloLevel2", GetPointerTo("CaloLevel2"));          };
1655  //          cout << "Calorimeter  : branch CaloLevel2"<<endl;          if(TRKh) {
1656  //      };              tree_clone[i]->Branch("TrkHough","TrkHough", GetPointerTo("TrkHough"));
1657  //     }                  cout << "Tracker      : branch TrkHough"<<endl;
1658            };
1659            i++;
1660        }
1661    
1662  //     // ToF          // Calorimeter
1663  //     if(TOF) {      if(CAL1||CAL2){
1664  //      O_clone = new TTree("ToF_clone","PAMELA ToF level2 data ");              tree_clone[i] = new TTree("Calorimeter","PAMELA calorimeter level2 data ");    
1665  //      tof_clone = new ToFLevel2();          if(CAL1) {
1666  //      O_clone->Branch("ToFLevel2","ToFLevel2", GetPointerTo("ToFLevel2"));              tree_clone[i]->Branch("CaloLevel1", "CaloLevel1", GetPointerTo("CaloLevel1"));
1667  //      cout << "ToF          : branch ToFLevel2"<<endl;              cout << "Calorimeter  : branch CaloLevel1"<<endl;
1668  //     };          };
1669  //     // Trigger          if(CAL2) {
1670  //     if(TRG) {              tree_clone[i]->Branch("CaloLevel2","CaloLevel2", GetPointerTo("CaloLevel2"));
1671  //      R_clone = new TTree("Trigger_clone","PAMELA trigger level2 data ");                  cout << "Calorimeter  : branch CaloLevel2"<<endl;
1672  //      trig_clone = new TrigLevel2();          };
1673  //      R_clone->Branch("TrigLevel2","TrigLevel2", GetPointerTo("TrigLevel2"));          i++;
1674  //      cout << "Trigger      : branch TrigLevel2"<<endl;      }    
 //     };  
 //     // S4  
 //     if(S4) {  
 //      S_clone = new TTree("S4_clone","PAMELA S4 level2 data ");        
 //      s4_clone = new S4Level2();  
 //      S_clone->Branch("S4Level2","S4Level2", GetPointerTo("S4Level2"));  
 //      cout << "S4           : branch S4Level2"<<endl;  
 //     };  
 //     // Neutron Detector  
 //     if(ND) {  
 //      N_clone = new TTree("NeutronD_clone","PAMELA neutron detector level2 data ");    
 //      nd_clone = new NDLevel2();  
 //      N_clone->Branch("NDLevel2","NDLevel2", GetPointerTo("NDLevel2"));  
 //      cout << "NeutronD     : branch NDLevel2"<<endl;  
 //     };  
 //     // Anticounters  
 //     if(AC) {  
 //      A_clone = new TTree("Anticounter_clone","PAMELA anticounter detector level2 data ");      
 //      ac_clone = new AcLevel2();  
 //      A_clone->Branch("AcLevel2","AcLevel2", GetPointerTo("AcLevel2"));  
 //      cout << "Anticounter  : branch AcLevel2"<<endl;  
 //     };  
 //     // OrbitalInfo  
 //     if(ORB) {  
 //      B_clone = new TTree("OrbitalInfo_clone","PAMELA oribital info  ");        
 //      orb_clone = new OrbitalInfo();  
 //      B_clone->Branch("OrbitalInfo","OrbitalInfo", GetPointerTo("OrbitalInfo"));  
 //      cout << "OrbitalInfo  : branch OrbitalInfo"<<endl;  
 //     };  
 //     cout << "+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+" <<endl;  
1675    
1676  // }      // ToF    
1677        if(TOF) {
1678            tree_clone[i] = new TTree("ToF","PAMELA ToF level2 data ");    
1679            tree_clone[i]->Branch("ToFLevel2","ToFLevel2", GetPointerTo("ToFLevel2"));
1680            cout << "ToF          : branch ToFLevel2"<<endl;
1681            i++;
1682        };
1683        // Trigger
1684        if(TRG) {
1685            tree_clone[i] = new TTree("Trigger","PAMELA trigger level2 data ");    
1686            tree_clone[i]->Branch("TrigLevel2","TrigLevel2", GetPointerTo("TrigLevel2"));
1687            cout << "Trigger      : branch TrigLevel2"<<endl;
1688            i++;
1689        };
1690        // S4
1691        if(S4) {
1692            tree_clone[i] = new TTree("S4","PAMELA S4 level2 data ");      
1693            tree_clone[i]->Branch("S4Level2","S4Level2", GetPointerTo("S4Level2"));
1694            cout << "S4           : branch S4Level2"<<endl;
1695            i++;
1696        };
1697        // Neutron Detector
1698        if(ND) {
1699            tree_clone[i] = new TTree("NeutronD","PAMELA neutron detector level2 data ");  
1700            tree_clone[i]->Branch("NDLevel2","NDLevel2", GetPointerTo("NDLevel2"));
1701            cout << "NeutronD     : branch NDLevel2"<<endl;
1702            i++;
1703        };
1704        // Anticounters
1705        if(AC) {
1706            tree_clone[i] = new TTree("Anticounter","PAMELA anticounter detector level2 data ");    
1707            tree_clone[i]->Branch("AcLevel2","AcLevel2", GetPointerTo("AcLevel2"));
1708            cout << "Anticounter  : branch AcLevel2"<<endl;
1709            i++;
1710        };
1711        // OrbitalInfo
1712        if(ORB) {
1713            tree_clone[i] = new TTree("OrbitalInfo","PAMELA oribital info  ");      
1714            tree_clone[i]->Branch("OrbitalInfo","OrbitalInfo", GetPointerTo("OrbitalInfo"));
1715            cout << "OrbitalInfo  : branch OrbitalInfo"<<endl;
1716            i++;
1717        };
1718        cout << "+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+" <<endl;
1719    
1720    }
1721    
1722  // /**  // /**
1723  //  * Create clone-trees  //  * Create clone-trees

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.23