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); |
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); |
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 |
//-------------------------------------- |
//-------------------------------------- |
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; |
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; |
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 |
|
|
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) { |
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 |
// |
// |
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; |
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 |
// |
// |
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; |
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()); |
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 |