| 397 |
* If no options are specified, the default is assumed. Default is: |
* If no options are specified, the default is assumed. Default is: |
| 398 |
* +TRK2+CAL2+CAL1+TOF+TRG+ND+AC+S4+ORB |
* +TRK2+CAL2+CAL1+TOF+TRG+ND+AC+S4+ORB |
| 399 |
*/ |
*/ |
| 400 |
PamLevel2::PamLevel2(TString ddir,TString list,TString detlist){ |
PamLevel2::PamLevel2(TString ddir,TString llist,TString detlist){ |
| 401 |
Initialize(); |
Initialize(); |
| 402 |
TList* listf = GetListOfLevel2Files(ddir,list); |
TList* listf = GetListOfLevel2Files(ddir,llist); |
| 403 |
GetPamTree(listf,detlist); |
if(listf)GetPamTree(listf,detlist); |
| 404 |
GetRunTree(listf); |
if(listf)GetRunTree(listf); |
| 405 |
}; |
}; |
| 406 |
|
|
| 407 |
PamLevel2::PamLevel2(TString ddir,TList *list,TString detlist){ |
PamLevel2::PamLevel2(TString ddir,TList *llist,TString detlist){ |
| 408 |
Initialize(); |
Initialize(); |
| 409 |
GetPamTree(list,detlist); |
GetPamTree(llist,detlist); |
| 410 |
GetRunTree(list); |
GetRunTree(llist); |
| 411 |
}; |
}; |
| 412 |
/** |
/** |
| 413 |
* Constructor |
* Constructor |
| 416 |
* Default trees/branches are loaded. Default is: |
* Default trees/branches are loaded. Default is: |
| 417 |
* +TRK2+CAL2+CAL1+TOF+TRG+ND+AC+S4+ORB |
* +TRK2+CAL2+CAL1+TOF+TRG+ND+AC+S4+ORB |
| 418 |
*/ |
*/ |
| 419 |
PamLevel2::PamLevel2(TString ddir,TString list){ |
PamLevel2::PamLevel2(TString ddir,TString llist){ |
| 420 |
Initialize(); |
Initialize(); |
| 421 |
TList* listf = GetListOfLevel2Files(ddir,list); |
TList* listf = GetListOfLevel2Files(ddir,llist); |
| 422 |
GetPamTree(listf,""); |
GetPamTree(listf,""); |
| 423 |
GetRunTree(listf); |
GetRunTree(listf); |
| 424 |
}; |
}; |
| 1867 |
TList* PamLevel2::GetListOfLevel2Files(TString ddir, TString flisttxt = ""){ |
TList* PamLevel2::GetListOfLevel2Files(TString ddir, TString flisttxt = ""){ |
| 1868 |
|
|
| 1869 |
TString wdir = gSystem->WorkingDirectory(); |
TString wdir = gSystem->WorkingDirectory(); |
| 1870 |
|
|
|
// if(ddir=="")ddir = wdir; |
|
|
// TSystemDirectory *datadir = new TSystemDirectory(gSystem->BaseName(ddir),ddir); |
|
| 1871 |
if ( ddir != ""){ |
if ( ddir != ""){ |
| 1872 |
cout << "Level2 data directory : "<< ddir << endl; |
cout << "Level2 data directory : "<< ddir << endl; |
| 1873 |
} else { |
} else { |
| 1876 |
TList *contents = new TList; // create output list |
TList *contents = new TList; // create output list |
| 1877 |
contents->SetOwner(); |
contents->SetOwner(); |
| 1878 |
|
|
| 1879 |
// char *fullpath; |
// -------------------------------------- |
| 1880 |
// const char *fullpath; |
// case 1 : input file/file-list provided |
| 1881 |
|
// -------------------------------------- |
|
// if no input file list is given: |
|
| 1882 |
if ( flisttxt != "" ){ |
if ( flisttxt != "" ){ |
| 1883 |
|
|
| 1884 |
// if( !gSystem->IsFileInIncludePath(flisttxt,&fullpath) ){ |
// -------------------------------------- |
| 1885 |
// if( !(fullpath = gSystem->FindFile("./",flisttxt)) ){ |
// a list of files given as input |
| 1886 |
// cout <<"File "<<flisttxt<<" not found"<<endl; |
// -------------------------------------- |
|
// return 0; |
|
|
// } |
|
|
// flisttxt = fullpath; |
|
| 1887 |
if ( !flisttxt.EndsWith(".root") ){ |
if ( !flisttxt.EndsWith(".root") ){ |
| 1888 |
|
|
| 1889 |
flisttxt = gSystem->ConcatFileName(gSystem->DirName(flisttxt),gSystem->BaseName(flisttxt)); |
TString dir = gSystem->DirName(flisttxt); |
| 1890 |
|
// cout << " List directory "<<dir<<endl; |
| 1891 |
|
if(dir == "." || dir == "") |
| 1892 |
|
flisttxt = gSystem->ConcatFileName(wdir.Data(),gSystem->BaseName(flisttxt)); |
| 1893 |
|
// flisttxt = gSystem->ConcatFileName(gSystem->DirName(flisttxt),gSystem->BaseName(flisttxt)); |
| 1894 |
|
|
| 1895 |
if( !gSystem->ChangeDirectory(ddir) ){ |
if( !gSystem->ChangeDirectory(ddir) ){ |
| 1896 |
cout << "Cannot change directory : "<<ddir<<endl; |
cout << "Cannot change directory : "<<ddir<<endl; |
| 1901 |
ifstream in; |
ifstream in; |
| 1902 |
in.open(flisttxt, ios::in); //open input file list |
in.open(flisttxt, ios::in); //open input file list |
| 1903 |
if(!in.good()){ |
if(!in.good()){ |
| 1904 |
cout <<" ERROR opening the file "<<endl; |
cout <<" TList* PamLevel2::GetListOfLevel2Files(TString, TString) --> ERROR opening the file "<<endl; |
| 1905 |
gSystem->ChangeDirectory(wdir); // back to the working directory |
gSystem->ChangeDirectory(wdir); // back to the working directory |
| 1906 |
return 0; |
return 0; |
| 1907 |
} |
} |
| 1908 |
int line=0; |
int line=0; |
| 1909 |
|
// ........................... |
| 1910 |
|
// loop over file-list records |
| 1911 |
|
// ........................... |
| 1912 |
while (1) { |
while (1) { |
| 1913 |
TString file; |
TString file; |
| 1914 |
in >> file; |
in >> file; |
| 1915 |
if (!in.good()) break; |
if (!in.good()) break; |
| 1916 |
line++; |
line++; |
| 1917 |
// cout <<"(1) " << file << endl; |
cout <<"(*) " << file << endl; |
| 1918 |
if(file.IsNull()){ |
if(file.IsNull()){ |
| 1919 |
cout << "-- list interrupted at line "<<line <<endl; |
cout << "-- list interrupted at line "<<line <<endl; |
| 1920 |
break; |
break; |
| 1921 |
} |
} |
| 1922 |
if(file.Contains("#"))file = file(0,file.First("#")); |
if(file.Contains("#"))file = file(0,file.First("#")); |
| 1923 |
// cout <<"(2) " << file << endl; |
// |
| 1924 |
// if( gSystem->IsFileInIncludePath(file,&fullpath) ){ |
// take only root files |
| 1925 |
// if( (fullpath = gSystem->FindFile(ddir,file)) ){ |
// |
| 1926 |
if( file.EndsWith(".root") ){ |
if( file.EndsWith(".root") ){ |
| 1927 |
TString filedir; |
TString filedir; |
| 1928 |
|
cout << ddir << endl; |
| 1929 |
if (ddir != ""){ |
if (ddir != ""){ |
| 1930 |
filedir = ddir; // take the input dir |
filedir = ddir; // take the input dir |
| 1931 |
} else { |
} else { |
| 1932 |
gSystem->ChangeDirectory(wdir); // back to the working directory |
gSystem->ChangeDirectory(wdir); // back to the working directory |
| 1933 |
filedir = gSystem->DirName(file); // this will take the path if exist in the list otherwise it will return automatically the working dir |
filedir = gSystem->DirName(file); // this will take the path if exist in the list otherwise it will return automatically the working dir |
| 1934 |
}; |
}; |
| 1935 |
|
filedir.Append("/"); |
| 1936 |
char *fullpath = gSystem->ConcatFileName(gSystem->DirName(filedir),gSystem->BaseName(file)); |
char *fullpath = gSystem->ConcatFileName(gSystem->DirName(filedir),gSystem->BaseName(file)); |
| 1937 |
contents->Add(new TSystemFile(fullpath,gSystem->DirName(fullpath)));// add file to the list |
contents->Add(new TSystemFile(fullpath,gSystem->DirName(fullpath)));// add file to the list |
| 1938 |
|
cout << fullpath << endl; |
| 1939 |
delete fullpath; |
delete fullpath; |
| 1940 |
} |
} |
| 1941 |
// }else{ |
// }else{ |
| 1943 |
// }; |
// }; |
| 1944 |
}; |
}; |
| 1945 |
in.close(); |
in.close(); |
| 1946 |
|
// -------------------------------------- |
| 1947 |
|
// a single root file given as input |
| 1948 |
|
// -------------------------------------- |
| 1949 |
} else { |
} else { |
| 1950 |
if(flisttxt.Contains("#"))flisttxt = flisttxt(0,flisttxt.First("#")); |
if(flisttxt.Contains("#"))flisttxt = flisttxt(0,flisttxt.First("#")); |
| 1951 |
char *fullpath = gSystem->ConcatFileName(gSystem->DirName(flisttxt),gSystem->BaseName(flisttxt)); |
char *fullpath = gSystem->ConcatFileName(gSystem->DirName(flisttxt),gSystem->BaseName(flisttxt)); |
| 1952 |
contents->Add(new TSystemFile(fullpath,gSystem->DirName(fullpath)));// add file to the list |
contents->Add(new TSystemFile(fullpath,gSystem->DirName(fullpath)));// add file to the list |
| 1953 |
delete fullpath; |
delete fullpath; |
| 1954 |
}; |
}; |
| 1955 |
|
// --------------------------------------------------------------------------------- |
| 1956 |
|
// case 2 : no input file/file-list provided --> read all files insede the directory |
| 1957 |
|
// --------------------------------------------------------------------------------- |
| 1958 |
}else{ |
}else{ |
| 1959 |
|
|
| 1960 |
cout << "No input file list given."<<endl; |
cout << "No input file list given."<<endl; |
| 1967 |
|
|
| 1968 |
TSystemDirectory *datadir = new TSystemDirectory(gSystem->BaseName(ddir),ddir); |
TSystemDirectory *datadir = new TSystemDirectory(gSystem->BaseName(ddir),ddir); |
| 1969 |
TList *temp = datadir->GetListOfFiles(); |
TList *temp = datadir->GetListOfFiles(); |
| 1970 |
|
if(!temp)return 0; |
| 1971 |
// temp->Print(); |
// temp->Print(); |
| 1972 |
// cout << "*************************************" << endl; |
// cout << "*************************************" << endl; |
| 1973 |
|
|
| 2648 |
if( !GetOrbitalInfo() )cout << "** WARNING ** missing OrbitalInfo ---> run info might be not correctly updated "<<endl; |
if( !GetOrbitalInfo() )cout << "** WARNING ** missing OrbitalInfo ---> run info might be not correctly updated "<<endl; |
| 2649 |
if ( gltsync ) delete gltsync; //Emiliano |
if ( gltsync ) delete gltsync; //Emiliano |
| 2650 |
if(!dbc || (dbc && !dbc->IsConnected()) )SetDBConnection(); //Emiliano |
if(!dbc || (dbc && !dbc->IsConnected()) )SetDBConnection(); //Emiliano |
| 2651 |
gltsync = new GL_TIMESYNC(GetRunInfo()->ID_ROOT_L0,"ID",dbc); //Emiliano |
gltsync = new GL_TIMESYNC(GetRunInfo()->ID_ROOT_L0,"ID",dbc,false); //Emiliano // the "false" means not to use level0 file (not necessary here) |
| 2652 |
if ( dbc ) dbc->Close();// Emiliano |
if ( dbc ) dbc->Close();// Emiliano |
| 2653 |
}; |
}; |
| 2654 |
// --------------------------------------------------------------- |
// --------------------------------------------------------------- |
| 2791 |
irunt = irun - irunoffset[run_tree->GetTreeNumber()]; |
irunt = irun - irunoffset[run_tree->GetTreeNumber()]; |
| 2792 |
if ( gltsync ) delete gltsync; // Emiliano |
if ( gltsync ) delete gltsync; // Emiliano |
| 2793 |
if(!dbc || (dbc && !dbc->IsConnected()) )SetDBConnection(); //Emiliano |
if(!dbc || (dbc && !dbc->IsConnected()) )SetDBConnection(); //Emiliano |
| 2794 |
gltsync = new GL_TIMESYNC(GetRunInfo()->ID_ROOT_L0,"ID",dbc); // Emiliano |
gltsync = new GL_TIMESYNC(GetRunInfo()->ID_ROOT_L0,"ID",dbc,false); // Emiliano |
| 2795 |
if ( dbc ) dbc->Close(); // Emiliano |
if ( dbc ) dbc->Close(); // Emiliano |
| 2796 |
if(gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT)>gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT) ){ // Emiliano |
if(gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT)>gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT) ){ // Emiliano |
| 2797 |
cout << "Bool_t PamLevel2::UpdateRunInfo(Long64_t iev) -- WARNING -- irun "<<irun<<" has RUNHEADER_OBT>=RUNTRAILER_OBT " <<endl; |
cout << "Bool_t PamLevel2::UpdateRunInfo(Long64_t iev) -- WARNING -- irun "<<irun<<" has RUNHEADER_OBT>=RUNTRAILER_OBT " <<endl; |
| 3134 |
} |
} |
| 3135 |
|
|
| 3136 |
TList *lk = f->GetListOfKeys(); |
TList *lk = f->GetListOfKeys(); |
| 3137 |
|
if(!lk)return; |
| 3138 |
TIter next(lk); |
TIter next(lk); |
| 3139 |
TKey *key =0; |
TKey *key =0; |
| 3140 |
|
|
| 3457 |
if(GP){ |
if(GP){ |
| 3458 |
Int_t nevt = ((TTree*)f->Get("h20"))->GetEntries(); |
Int_t nevt = ((TTree*)f->Get("h20"))->GetEntries(); |
| 3459 |
if( nev && nevt!=nev){ |
if( nev && nevt!=nev){ |
| 3460 |
cout << "File: "<< f->GetName() <<" discarded ---- OrbitalInfo tree has "<<nevt<<" events instead of "<<nev<< endl; |
cout << "File: "<< f->GetName() <<" discarded ---- h20 tree has "<<nevt<<" events instead of "<<nev<< endl; |
| 3461 |
return false; |
return false; |
| 3462 |
} |
} |
| 3463 |
nev=nevt; |
nev=nevt; |
| 3749 |
}; |
}; |
| 3750 |
// GPamela |
// GPamela |
| 3751 |
if(GP) { |
if(GP) { |
| 3752 |
pam_tree_clone[i] = new TTree("h20","PAMELA orbital info "); |
pam_tree_clone[i] = new TTree("h20","GPAMELA info "); |
| 3753 |
pam_tree_clone[i]->Branch("GPamela","GPamela", GetPointerTo("GPamela"),32000,1);//split |
pam_tree_clone[i]->Branch("GPamela","GPamela", GetPointerTo("GPamela"),32000,1);//split |
| 3754 |
cout << "OrbitalInfo : branch OrbitalInfo"<<endl; |
cout << "OrbitalInfo : branch OrbitalInfo"<<endl; |
| 3755 |
i++; |
i++; |
| 3845 |
//------------------------------- |
//------------------------------- |
| 3846 |
ii = iee; |
ii = iee; |
| 3847 |
if( !pam_tree->GetEntry(ii) ){ |
if( !pam_tree->GetEntry(ii) ){ |
| 3848 |
cout << " Int_t PamLevel2::GetEntry(Int_t) -- ERROR -- error reading pam tree"<<endl; |
cout << " Int_t PamLevel2::GetEntry(Int_t) -- ERROR -- error reading pam tree"<<endl; |
| 3849 |
return 0; |
return 0; |
| 3850 |
} |
} |
|
|
|
| 3851 |
// |
// |
| 3852 |
// ... that's way I put it here. Notice that nothing change in the code (is backward compatible) since in any case you return with 0. |
// ... that's way I put it here. Notice that nothing change in the code (is backward compatible) since in any case you return with 0. |
| 3853 |
// in theory one would like to return 1 if run is not loaded but now I don't have the will to add that 2 lines of code and it is not |
// in theory one would like to return 1 if run is not loaded but now I don't have the will to add that 2 lines of code and it is not |