| 304 |
|
|
| 305 |
if(h0_obj) h0_obj->Clear(); |
if(h0_obj) h0_obj->Clear(); |
| 306 |
// if(trk0_obj) trk0_obj->Clear(); |
// if(trk0_obj) trk0_obj->Clear(); |
|
if(calo0_obj) calo0_obj->Clear(); |
|
| 307 |
if(trk1_obj) trk1_obj->Clear(); |
if(trk1_obj) trk1_obj->Clear(); |
| 308 |
if(trk2_obj) trk2_obj->Clear(); |
if(trk2_obj) trk2_obj->Clear(); |
| 309 |
if(trkh_obj) trkh_obj->Clear(); |
if(trkh_obj) trkh_obj->Clear(); |
| 310 |
|
if(calo0_obj) calo0_obj->Clear(); |
| 311 |
if(calo1_obj)calo1_obj->Clear(); |
if(calo1_obj)calo1_obj->Clear(); |
| 312 |
if(calo2_obj)calo2_obj->Clear(); |
if(calo2_obj)calo2_obj->Clear(); |
| 313 |
if(tof_obj) tof_obj->Clear(); |
if(tof_obj) tof_obj->Clear(); |
| 939 |
// ts = tp; |
// ts = tp; |
| 940 |
// cs = cp; |
// cs = cp; |
| 941 |
// os = op; |
// os = op; |
| 942 |
cout << "Warning - track image ambiguity not solved" << endl; |
// cout << "Warning - track image ambiguity not solved" << endl; |
| 943 |
// cout << ts->GetNtot() << " "<< ts->chi2 << " " << npcfit[1] << " "<< nphit_p << endl; |
// cout << ts->GetNtot() << " "<< ts->chi2 << " " << npcfit[1] << " "<< nphit_p << endl; |
| 944 |
}; |
}; |
| 945 |
|
|
| 1999 |
// ----------------------------------------------------------------------- |
// ----------------------------------------------------------------------- |
| 2000 |
if ( irun < 0 ){ |
if ( irun < 0 ){ |
| 2001 |
irun = 0LL; |
irun = 0LL; |
| 2002 |
|
irunentry = 0; |
| 2003 |
|
prevshift = 0; |
| 2004 |
run_tree->GetEntry(irun); |
run_tree->GetEntry(irun); |
| 2005 |
}; |
}; |
| 2006 |
// |
// |
| 2007 |
bool fromfirst = true; // first loop over runs |
bool fromfirst = true; // first loop over runs |
| 2008 |
|
|
| 2009 |
|
// Bool_t hasfrag = false; |
| 2010 |
|
// if( GetRunInfo()->ID_RUN_FRAG!=0 && GetRunInfo()->ID_RUN_FRAG != GetRunInfo()->ID)hasfrag=true; |
| 2011 |
|
// ULong64_t fragid = GetRunInfo()->ID_RUN_FRAG; |
| 2012 |
|
|
| 2013 |
// ------------------------------------------------------ |
// ------------------------------------------------------ |
| 2014 |
// loop over runs to find the one that contains the event |
// loop over runs to find the one that contains the event |
| 2015 |
// ------------------------------------------------------ |
// ------------------------------------------------------ |
| 2016 |
while ( !(GetOrbitalInfo()->absTime >= GetRunInfo()->RUNHEADER_TIME && // check on absolute time (s) |
while ( |
| 2017 |
GetOrbitalInfo()->absTime <= GetRunInfo()->RUNTRAILER_TIME) && |
( |
| 2018 |
!(GetOrbitalInfo()->OBT >= GetRunInfo()->RUNHEADER_OBT && // additional check on OBT (ms) |
( |
| 2019 |
GetOrbitalInfo()->OBT <= GetRunInfo()->RUNTRAILER_OBT) && |
!(GetOrbitalInfo()->absTime >= GetRunInfo()->RUNHEADER_TIME && // check on absolute time (s) |
| 2020 |
irun < run_tree->GetEntries() ){ |
GetOrbitalInfo()->absTime <= GetRunInfo()->RUNTRAILER_TIME) && |
| 2021 |
|
!(GetOrbitalInfo()->OBT >= GetRunInfo()->RUNHEADER_OBT && // additional check on OBT (ms) |
| 2022 |
|
GetOrbitalInfo()->OBT <= GetRunInfo()->RUNTRAILER_OBT) |
| 2023 |
|
) |
| 2024 |
|
|| GetRunInfo()->NEVENTS==0 |
| 2025 |
|
|| !(irunentry < GetRunInfo()->NEVENTS-1-prevshift) |
| 2026 |
|
) |
| 2027 |
|
&& irun < run_tree->GetEntries() ){ |
| 2028 |
|
|
| 2029 |
irun++; |
irun++; |
| 2030 |
// ------------------------------------ |
// ------------------------------------ |
| 2031 |
// if the end of run tree is reached... |
// if the end of run tree is reached... |
| 2051 |
// save the index of the first entry of the run, relative to pam_tree, |
// save the index of the first entry of the run, relative to pam_tree, |
| 2052 |
// and read a new run |
// and read a new run |
| 2053 |
// ------------------------------------------------------------------- |
// ------------------------------------------------------------------- |
| 2054 |
if(irun>0)runfirstentry += (GetRunInfo()->NEVENTS); |
if(irun>0)runfirstentry += (GetRunInfo()->NEVENTS)-prevshift; |
| 2055 |
|
irunentry = 0; |
| 2056 |
|
prevshift = 0; |
| 2057 |
run_tree->GetEntry(irun); |
run_tree->GetEntry(irun); |
| 2058 |
if(GetRunInfo()->RUNHEADER_OBT>=GetRunInfo()->RUNTRAILER_OBT ){ |
if(GetRunInfo()->RUNHEADER_OBT>GetRunInfo()->RUNTRAILER_OBT ){ |
| 2059 |
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; |
| 2060 |
cout << " (NB!! in this case some events are assigned to a wrong run)"<<endl; |
cout << " (NB!! in this case some events are assigned to a wrong run)"<<endl; |
| 2061 |
} |
} |
| 2062 |
|
// if(hasfrag && fragid != GetRunInfo()->ID){ |
| 2063 |
|
// cout << "... where is the next fragment ??"<<endl; |
| 2064 |
|
// } |
| 2065 |
}; |
}; |
| 2066 |
|
|
| 2067 |
|
|
| 2068 |
// -------------------------------------- |
// -------------------------------------- |
| 2069 |
// if there was no need to update the run |
// if there was no need to update the run |
| 2070 |
// ---> exit with FALSE |
// ---> exit with FALSE |
| 2076 |
// ---> exit with TRUE |
// ---> exit with TRUE |
| 2077 |
// -------------------------------------- |
// -------------------------------------- |
| 2078 |
cout << endl << " ))))) UPDATE RUN INFO ((((( @iev "<<iev<<" run "<<GetRunInfo()->ID<<" irun "<<irun<<endl; |
cout << endl << " ))))) UPDATE RUN INFO ((((( @iev "<<iev<<" run "<<GetRunInfo()->ID<<" irun "<<irun<<endl; |
| 2079 |
prevshift = 0; |
// ---------------------------------------------------- |
| 2080 |
|
// then check if the run has a fragment |
| 2081 |
|
// in this case we have to switch to the next fragment |
| 2082 |
|
// when the end of the first fragment is reached |
| 2083 |
|
// ---------------------------------------------------- |
| 2084 |
|
if( |
| 2085 |
|
GetRunInfo()->ID_RUN_FRAG != 0 && |
| 2086 |
|
// GetRunInfo()->ID_RUN_FRAG != GetRunInfo()->ID && |
| 2087 |
|
true ){ |
| 2088 |
|
cout << "* fragment *"<<endl; |
| 2089 |
|
} |
| 2090 |
|
|
| 2091 |
return(true); |
return(true); |
| 2092 |
}; |
}; |
| 2093 |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
| 2736 |
*/ |
*/ |
| 2737 |
void PamLevel2::CreateCloneTrees(TFile *ofile){ |
void PamLevel2::CreateCloneTrees(TFile *ofile){ |
| 2738 |
|
|
| 2739 |
|
|
| 2740 |
|
// if the pointer is null, create a default file |
| 2741 |
|
|
| 2742 |
|
if(!ofile){ |
| 2743 |
|
cout << "void PamLevel2::CreateCloneTrees(TFile*) -- WARNING -- Creating file: clone-tree.root "<<endl; |
| 2744 |
|
ofile = new TFile("clone-tree.root","recreate"); |
| 2745 |
|
} |
| 2746 |
|
|
| 2747 |
ofile->cd(); |
ofile->cd(); |
| 2748 |
|
|
| 2749 |
cout << "+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+" <<endl; |
cout << "+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+" <<endl; |
| 2913 |
//Int_t PamLevel2::GetEntry(Int_t iee){ |
//Int_t PamLevel2::GetEntry(Int_t iee){ |
| 2914 |
Int_t PamLevel2::GetEntry(Long64_t iee){ |
Int_t PamLevel2::GetEntry(Long64_t iee){ |
| 2915 |
|
|
| 2916 |
|
// cout << "-------------------------------------"<<endl; |
| 2917 |
|
// cout << "Int_t PamLevel2::GetEntry("<<iee<<")"<<endl; |
| 2918 |
|
|
| 2919 |
if(!pam_tree){ |
if(!pam_tree){ |
| 2920 |
cout << " Int_t PamLevel2::GetEntry(Int_t) -- ERROR -- level2 trees not loaded"<<endl; |
cout << " Int_t PamLevel2::GetEntry(Int_t) -- ERROR -- level2 trees not loaded"<<endl; |
| 2921 |
return 0; |
return 0; |
| 2961 |
|
|
| 2962 |
// cout << "PamLevel2::GetEntry("<<iee<<") "<<irun<<" "<<runfirstentry<<" "<<irunentry<<endl; |
// cout << "PamLevel2::GetEntry("<<iee<<") "<<irun<<" "<<runfirstentry<<" "<<irunentry<<endl; |
| 2963 |
|
|
| 2964 |
// cout << " irunentry "<<irunentry << endl; |
// cout << "irunentry "<<irunentry << endl; |
| 2965 |
|
// cout << "runfirstentry "<<runfirstentry << endl; |
| 2966 |
|
// cout << "nevents "<<GetRunInfo()->NEVENTS<< endl; |
| 2967 |
|
|
| 2968 |
|
// if( TRK0 || CAL0 || TOF0 ){ |
| 2969 |
|
// if( !GetYodaEntry( ) ){ |
| 2970 |
|
// cout << " Int_t PamLevel2::GetEntry(Int_t) -- ERROR -- error reading level0 tree"<<endl; |
| 2971 |
|
// return 0; |
| 2972 |
|
// } |
| 2973 |
|
// } |
| 2974 |
|
|
| 2975 |
|
|
|
if( TRK0 || CAL0 || TOF0 ){ |
|
|
if( !GetYodaEntry( ) ){ |
|
|
cout << " Int_t PamLevel2::GetEntry(Int_t) -- ERROR -- error reading level0 tree"<<endl; |
|
|
return 0; |
|
|
} |
|
|
} |
|
| 2976 |
return 1; |
return 1; |
| 2977 |
|
|
| 2978 |
} |
} |
| 2979 |
|
|
| 2980 |
|
TrkLevel0 *PamLevel2::GetTrkLevel0(){ |
| 2981 |
|
if( !TRK0 )return NULL; |
| 2982 |
|
if( !GetYodaEntry( ) ){ |
| 2983 |
|
cout << " Int_t PamLevel2::GetTrkLevel0() -- ERROR -- error reading level0 tree"<<endl; |
| 2984 |
|
return 0; |
| 2985 |
|
} |
| 2986 |
|
return trk0_obj; |
| 2987 |
|
}; |
| 2988 |
|
CaloLevel0 *PamLevel2::GetCaloLevel0(){ |
| 2989 |
|
if( !CAL0 )return NULL; |
| 2990 |
|
if( !GetYodaEntry( ) ){ |
| 2991 |
|
cout << " Int_t PamLevel2::GetCaloLevel0() -- ERROR -- error reading level0 tree"<<endl; |
| 2992 |
|
return 0; |
| 2993 |
|
} |
| 2994 |
|
return calo0_obj; |
| 2995 |
|
}; |
| 2996 |
|
|
| 2997 |
|
|
| 2998 |
/** |
/** |
| 2999 |
* Method to retrieve the level0 tree (YODA tree) that contains the current event. |
* Method to retrieve the level0 tree (YODA tree) that contains the current event. |
| 3000 |
* Given the run ID (...), if needed it query the DB and load the proper file. |
* Given the run ID (...), if needed it query the DB and load the proper file. |
| 3014 |
return NULL; |
return NULL; |
| 3015 |
} |
} |
| 3016 |
Int_t irootnew = run_obj->ID_ROOT_L0; |
Int_t irootnew = run_obj->ID_ROOT_L0; |
| 3017 |
// cout << "iroot "<<iroot<<endl; |
// cout << "iroot "<<iroot<<endl; |
| 3018 |
// cout << "irootnew "<<irootnew<<endl; |
// cout << "irootnew "<<irootnew<<endl; |
| 3019 |
|
|
| 3020 |
//=================================== |
//=================================== |
| 3021 |
// load the level0 file |
// load the level0 file |
| 3072 |
}; |
}; |
| 3073 |
l0_tree->SetBranchAddress("Tracker" ,trk0_obj->GetPointerToTrackerEvent()); |
l0_tree->SetBranchAddress("Tracker" ,trk0_obj->GetPointerToTrackerEvent()); |
| 3074 |
} |
} |
| 3075 |
//--------------------------------------------------- |
//-------------------------------------------------- |
| 3076 |
// CALORIMETER: |
// CALORIMETER: |
| 3077 |
if(CAL0){ |
if(CAL0){ |
| 3078 |
if(!calo0_obj){ |
if(!calo0_obj){ |
| 3161 |
Int_t answer = 0; |
Int_t answer = 0; |
| 3162 |
Int_t shift =0; |
Int_t shift =0; |
| 3163 |
// printf(" siamo qui %i %i \n",shift,prevshift); |
// printf(" siamo qui %i %i \n",shift,prevshift); |
| 3164 |
Int_t maxshift = 100; |
Int_t maxshift = 10; |
| 3165 |
do{ |
do{ |
| 3166 |
if(shift>0){ |
if(shift>0){ |
| 3167 |
cout << " PKTNUM L2 --- "<< GetOrbitalInfo()->pkt_num << " --- L0 --- "<< GetEventHeader()->GetPscuHeader()->GetCounter()<<endl; |
cout << " PKTNUM L2 --- "<< GetOrbitalInfo()->pkt_num << " --- L0 --- "<< GetEventHeader()->GetPscuHeader()->GetCounter()<<endl; |
| 3190 |
|
|
| 3191 |
}while( ( GetOrbitalInfo()->OBT != (UInt_t)(GetEventHeader()->GetPscuHeader()->GetOrbitalTime()) || GetOrbitalInfo()->pkt_num != (UInt_t)(GetEventHeader()->GetPscuHeader()->GetCounter())) && (quellagiusta+(Long64_t)shift) < GetYodaTree()->GetEntries() && shift < maxshift); |
}while( ( GetOrbitalInfo()->OBT != (UInt_t)(GetEventHeader()->GetPscuHeader()->GetOrbitalTime()) || GetOrbitalInfo()->pkt_num != (UInt_t)(GetEventHeader()->GetPscuHeader()->GetCounter())) && (quellagiusta+(Long64_t)shift) < GetYodaTree()->GetEntries() && shift < maxshift); |
| 3192 |
|
|
| 3193 |
if ( (quellagiusta+(Long64_t)shift) == GetYodaTree()->GetEntries() || shift == maxshift ) { |
if ( (quellagiusta+(Long64_t)shift+(Long64_t)prevshift) > GetYodaTree()->GetEntries() || shift == maxshift ) { |
| 3194 |
cout << " Big trouble here, no such event in Level0 data! " <<endl; |
cout << " Big trouble here, no such event in Level0 data! " <<endl; |
| 3195 |
return 0; |
return 0; |
| 3196 |
} |
} |
| 3201 |
return answer; |
return answer; |
| 3202 |
|
|
| 3203 |
} |
} |
| 3204 |
|
/** |
| 3205 |
|
* \Brief Set DB connection |
| 3206 |
|
*/ |
| 3207 |
|
Bool_t PamLevel2::SetDBConnection(){ |
| 3208 |
|
|
| 3209 |
|
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl; |
| 3210 |
|
cout<<"Connecting to DB"<<endl; |
| 3211 |
|
cout<<"HOST "<<host<<endl; |
| 3212 |
|
cout<<"USER "<<user<<endl; |
| 3213 |
|
cout<<"PSW "<<psw<<endl; |
| 3214 |
|
dbc = TSQLServer::Connect(host.Data(),user.Data(),psw.Data()); |
| 3215 |
|
if( !dbc )return false; |
| 3216 |
|
if( !dbc->IsConnected() )return false; |
| 3217 |
|
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl; |
| 3218 |
|
return true; |
| 3219 |
|
|
| 3220 |
|
} |