464 |
soft_obj = 0;// Emiliano |
soft_obj = 0;// Emiliano |
465 |
irun = -1LL; |
irun = -1LL; |
466 |
irunt = -1LL; |
irunt = -1LL; |
467 |
|
totrunentry = 0LL; |
468 |
|
totrunentrymax = 0LL; |
469 |
|
totrunentrymin = 0LL; |
470 |
runfirstentry = 0LL; |
runfirstentry = 0LL; |
471 |
runlastentry = 0LL; |
runlastentry = 0LL; |
472 |
gltsync = 0; // Emiliano |
gltsync = 0; // Emiliano |
803 |
soft_obj = 0;// Emiliano |
soft_obj = 0;// Emiliano |
804 |
irun = -1; |
irun = -1; |
805 |
irunt = -1; |
irunt = -1; |
806 |
|
totrunentry = 0LL; |
807 |
|
totrunentrymax = 0LL; |
808 |
|
totrunentrymin = 0LL; |
809 |
runfirstentry = 0ULL; |
runfirstentry = 0ULL; |
810 |
runlastentry = 0ULL; |
runlastentry = 0ULL; |
811 |
|
prevabstime = 0ULL; |
812 |
|
prevpktnum = 0; |
813 |
|
abstime = 0ULL; |
814 |
|
pktnum = 0; |
815 |
|
isFragment = false; |
816 |
// |
// |
817 |
totdltime[0] = 0LL; |
totdltime[0] = 0LL; |
818 |
totdltime[1] = 0LL; |
totdltime[1] = 0LL; |
2749 |
return T; |
return T; |
2750 |
|
|
2751 |
} |
} |
2752 |
|
|
2753 |
/** |
/** |
2754 |
* Update the runinfo informations (to be used to have Run infos event by event basis) |
* Update the runinfo informations (to be used to have Run infos event by event basis) |
2755 |
* @param run Pointer to the chain/tree which contains run infos |
* @param run Pointer to the chain/tree which contains run infos |
2785 |
return (false); |
return (false); |
2786 |
} |
} |
2787 |
|
|
2788 |
ULong64_t abstime = 0; |
ULong64_t abstimeu = 0; |
2789 |
if (GetOrbitalInfo()) |
if (GetOrbitalInfo()) |
2790 |
abstime = GetOrbitalInfo()->absTime; |
abstimeu = GetOrbitalInfo()->absTime; |
2791 |
|
|
2792 |
// |
// |
2793 |
// the first time the routine is called, set run search from the beginning |
// the first time the routine is called, set run search from the beginning |
2808 |
}; |
}; |
2809 |
// |
// |
2810 |
if (ISGP) |
if (ISGP) |
2811 |
abstime = GetRunInfo()->RUNHEADER_TIME; // BARBATRUCCO |
abstimeu = GetRunInfo()->RUNHEADER_TIME; // BARBATRUCCO |
2812 |
// |
// |
2813 |
if (irun == run->GetEntries() - 1LL && !(abstime >= GetRunInfo()->RUNHEADER_TIME && abstime |
if (irun == run->GetEntries() - 1LL && !(abstimeu >= GetRunInfo()->RUNHEADER_TIME && abstimeu |
2814 |
<= GetRunInfo()->RUNTRAILER_TIME)) { |
<= GetRunInfo()->RUNTRAILER_TIME)) { |
2815 |
irun = -1LL; |
irun = -1LL; |
2816 |
irunt = -1LL; |
irunt = -1LL; |
2822 |
// |
// |
2823 |
bool fromfirst = true; |
bool fromfirst = true; |
2824 |
// |
// |
2825 |
while (!(abstime >= GetRunInfo()->RUNHEADER_TIME && abstime <= GetRunInfo()->RUNTRAILER_TIME) && irun |
while (!(abstimeu >= GetRunInfo()->RUNHEADER_TIME && abstimeu <= GetRunInfo()->RUNTRAILER_TIME) && irun |
2826 |
< run->GetEntries() - 1LL) { |
< run->GetEntries() - 1LL) { |
2827 |
// while ( iev > (runfirstentry+(ULong64_t)(this->GetRunInfo()->NEVENTS-1)) && irun < run->GetEntries() ){ |
// while ( iev > (runfirstentry+(ULong64_t)(this->GetRunInfo()->NEVENTS-1)) && irun < run->GetEntries() ){ |
2828 |
irun++; |
irun++; |
2834 |
// cout << " ))))) UPDATE RUN INFO ((((( @iev "<<iev<<" run "<<GetRunInfo()->ID<<" irun "<<irun<<endl; |
// cout << " ))))) UPDATE RUN INFO ((((( @iev "<<iev<<" run "<<GetRunInfo()->ID<<" irun "<<irun<<endl; |
2835 |
// cout << "runfirstentry "<<runfirstentry<<endl; |
// cout << "runfirstentry "<<runfirstentry<<endl; |
2836 |
// printf(" iev %llu %u %llu \n",iev,this->GetRunInfo()->NEVENTS,(ULong64_t)(runfirstentry+(ULong64_t)(this->GetRunInfo()->NEVENTS))); |
// printf(" iev %llu %u %llu \n",iev,this->GetRunInfo()->NEVENTS,(ULong64_t)(runfirstentry+(ULong64_t)(this->GetRunInfo()->NEVENTS))); |
2837 |
// printf(" abstime %u trailertime %u \n",abstime,GetRunInfo()->RUNTRAILER_TIME); |
// printf(" abstimeu %u trailertime %u \n",abstimeu,GetRunInfo()->RUNTRAILER_TIME); |
2838 |
// printf(" IDRUN %u \n",GetRunInfo()->ID); |
// printf(" IDRUN %u \n",GetRunInfo()->ID); |
2839 |
// |
// |
2840 |
// prevshift = 0; |
// prevshift = 0; |
2841 |
// |
// |
2842 |
if (irun == (Long64_t)(run->GetEntries() - 1LL) && fromfirst && !(abstime >= GetRunInfo()->RUNHEADER_TIME |
if (irun == (Long64_t)(run->GetEntries() - 1LL) && fromfirst && !(abstimeu >= GetRunInfo()->RUNHEADER_TIME |
2843 |
&& abstime <= GetRunInfo()->RUNTRAILER_TIME)) { |
&& abstimeu <= GetRunInfo()->RUNTRAILER_TIME)) { |
2844 |
printf(" resetting irun (it should NOT happen!!!)\n"); |
printf(" resetting irun (it should NOT happen!!!)\n"); |
2845 |
fromfirst = false; |
fromfirst = false; |
2846 |
irun = 0; |
irun = 0; |
2853 |
// |
// |
2854 |
}; |
}; |
2855 |
// |
// |
2856 |
if (!(abstime >= GetRunInfo()->RUNHEADER_TIME && abstime <= GetRunInfo()->RUNTRAILER_TIME)) { |
if (!(abstimeu >= GetRunInfo()->RUNHEADER_TIME && abstimeu <= GetRunInfo()->RUNTRAILER_TIME)) { |
2857 |
printf(" Something very wrong here: cannot find RUN containing absolute time %llu \n", abstime); |
printf(" Something very wrong here: cannot find RUN containing absolute time %llu \n", abstimeu); |
2858 |
return false; |
return false; |
2859 |
} |
} |
2860 |
// |
// |
2887 |
return false; |
return false; |
2888 |
// |
// |
2889 |
} |
} |
2890 |
; |
|
2891 |
|
|
2892 |
Bool_t PamLevel2::UpdateRunInfo(Long64_t iev) { |
Bool_t PamLevel2::UpdateRunInfo(Long64_t iev) { |
2893 |
|
|
2900 |
return (false); |
return (false); |
2901 |
} |
} |
2902 |
|
|
2903 |
|
if (DBG) printf("ciccio\n"); |
2904 |
|
|
2905 |
Int_t oldrun = irun; // store current run index |
Int_t oldrun = irun; // store current run index |
2906 |
|
|
2907 |
// ----------------------------------------------------------------------- |
// ----------------------------------------------------------------------- |
2911 |
if (irun < 0) { |
if (irun < 0) { |
2912 |
irun = 0LL; |
irun = 0LL; |
2913 |
irunt = 0LL; |
irunt = 0LL; |
2914 |
|
totrunentry = 0LL; |
2915 |
|
totrunentrymin = 0LL; |
2916 |
|
totrunentrymax = 0LL; |
2917 |
irunentry = 0; |
irunentry = 0; |
2918 |
prevshift = 0; |
prevshift = 0; |
2919 |
|
prevabstime = 0; |
2920 |
|
prevpktnum = 0; |
2921 |
|
abstime = 0ULL; |
2922 |
|
pktnum = 0; |
2923 |
|
isFragment = false; |
2924 |
run_tree->GetEntry(irun); |
run_tree->GetEntry(irun); |
2925 |
if (!GetOrbitalInfo()) |
if (!GetOrbitalInfo()) |
2926 |
cout << "** WARNING ** missing OrbitalInfo ---> run info might be not correctly updated " << endl; |
cout << "** WARNING ** missing OrbitalInfo ---> run info might be not correctly updated " << endl; |
2938 |
// --------------------------------------------------------------- |
// --------------------------------------------------------------- |
2939 |
// retrieve OBT and absolute time of the event |
// retrieve OBT and absolute time of the event |
2940 |
// --------------------------------------------------------------- |
// --------------------------------------------------------------- |
2941 |
ULong64_t abstime = 0LL; |
// ULong64_t abstime = 0LL; |
2942 |
// ULong64_t obt = 0LL; // Emiliano |
// ULong64_t obt = 0LL; // Emiliano |
2943 |
Long64_t obt = 0LL; // Emiliano, Long64_t GL_TIMESYNC::DBobt(UInt_t obt) since depending on the situation OBT is lowered or boosted |
Long64_t obt = 0LL; // Emiliano, Long64_t GL_TIMESYNC::DBobt(UInt_t obt) since depending on the situation OBT is lowered or boosted |
2944 |
|
// UInt_t pkt = 0; |
2945 |
|
prevabstime = abstime; |
2946 |
|
prevpktnum = pktnum; |
2947 |
if (GetOrbitalInfo()) { |
if (GetOrbitalInfo()) { |
2948 |
abstime = GetOrbitalInfo()->absTime; |
abstime = GetOrbitalInfo()->absTime; |
2949 |
obt = gltsync->DBobt(GetOrbitalInfo()->OBT); // Emiliano |
obt = gltsync->DBobt(GetOrbitalInfo()->OBT); // Emiliano |
2950 |
|
pktnum = GetOrbitalInfo()->pkt_num; // Emiliano |
2951 |
} |
} |
2952 |
else { |
else { |
2953 |
abstime = GetRunInfo()->RUNHEADER_TIME; |
abstime = GetRunInfo()->RUNHEADER_TIME; |
2954 |
obt = gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT); // Emiliano |
obt = gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT); // Emiliano |
2955 |
|
pktnum = GetRunInfo()->RUNHEADER_PKT; // Emiliano |
2956 |
|
} |
2957 |
|
|
2958 |
|
if (DBG){ |
2959 |
|
printf("0abstime %lld %lld pktnum %d %d obt %lld \n",abstime,prevabstime,pktnum,prevpktnum,obt); |
2960 |
|
printf("0 rth %d %d nevents %d \n",GetRunInfo()->RUNHEADER_TIME,GetRunInfo()->RUNTRAILER_TIME,GetRunInfo()->NEVENTS); |
2961 |
|
printf("0 rto %d %d \n",GetRunInfo()->RUNHEADER_OBT,GetRunInfo()->RUNTRAILER_OBT); |
2962 |
|
printf("0 rto2 %lld %lld \n",gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT),gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT)); |
2963 |
|
printf("0 bo irunentry %lld prevshift %d irun %lld \n",irunentry,prevshift,irun); |
2964 |
|
printf("0 min %lld iev %lld max %lld tot %lld \n",totrunentrymin,iev,totrunentrymax,totrunentry); |
2965 |
} |
} |
2966 |
|
|
2967 |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
2982 |
} |
} |
2983 |
|
|
2984 |
// |
// |
2985 |
bool fromfirst = true; // first loop over runs |
if ( iev < totrunentrymin || iev > totrunentrymax // entry is outside run limits |
2986 |
|
|| iev == 0 // or it is the first entry |
2987 |
|
){ |
2988 |
|
|
2989 |
|
// check for a new run (ma prima il primo!) |
2990 |
|
if (DBG){ |
2991 |
|
printf("1abstime %lld %lld pktnum %d %d obt %lld \n",abstime,prevabstime,pktnum,prevpktnum,obt); |
2992 |
|
printf("1 rth %d %d nevents %d \n",GetRunInfo()->RUNHEADER_TIME,GetRunInfo()->RUNTRAILER_TIME,GetRunInfo()->NEVENTS); |
2993 |
|
printf("1 rto %d %d \n",GetRunInfo()->RUNHEADER_OBT,GetRunInfo()->RUNTRAILER_OBT); |
2994 |
|
printf("1 rto2 %lld %lld \n",gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT),gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT)); |
2995 |
|
printf("1 bo irunentry %lld prevshift %d irun %lld \n",irunentry,prevshift,irun); |
2996 |
|
printf("1 min %lld iev %lld max %lld tot %lld \n",totrunentrymin,iev,totrunentrymax,totrunentry); |
2997 |
|
} |
2998 |
|
|
2999 |
|
totrunentry = 0LL; |
3000 |
|
for (Int_t r=0; r< run_tree->GetEntries();r++){ |
3001 |
|
// ------------------------------------------------------------------- |
3002 |
|
// save the index of the first entry of the run, relative to pam_tree, |
3003 |
|
// and read a new run |
3004 |
|
// ------------------------------------------------------------------- |
3005 |
|
run_tree->GetEntry(r);//update runinfo |
3006 |
|
if ( r > 0 ){ |
3007 |
|
totrunentrymin = totrunentrymax+1; |
3008 |
|
} else { |
3009 |
|
totrunentrymin = 0LL; |
3010 |
|
} |
3011 |
|
totrunentry += GetRunInfo()->NEVENTS; |
3012 |
|
totrunentrymax = totrunentry - 1; |
3013 |
|
irun = r; |
3014 |
|
|
3015 |
|
//--> needed? |
3016 |
|
if (irun > 0) |
3017 |
|
runfirstentry += (GetRunInfo()->NEVENTS) - prevshift; |
3018 |
|
irunentry = 0; |
3019 |
|
prevshift = 0; |
3020 |
|
irunt = irun - irunoffset[run_tree->GetTreeNumber()]; |
3021 |
|
//<-- needed? |
3022 |
|
|
3023 |
|
if ( iev >= totrunentrymin && iev <= totrunentrymax ){ // entry is inside run limits |
3024 |
|
// |
3025 |
|
if (gltsync) |
3026 |
|
delete gltsync; // Emiliano |
3027 |
|
if (!dbc || (dbc && !dbc->IsConnected())) |
3028 |
|
SetDBConnection(); //Emiliano |
3029 |
|
gltsync = new GL_TIMESYNC(GetRunInfo()->ID_ROOT_L0, "ID", dbc, false); // Emiliano |
3030 |
|
if (dbc){ |
3031 |
|
dbc->Close(); // Emiliano |
3032 |
|
delete dbc; |
3033 |
|
dbc=0; |
3034 |
|
} |
3035 |
|
if (gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT) > gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT)) { // Emiliano |
3036 |
|
cout << "Bool_t PamLevel2::UpdateRunInfo(Long64_t iev) -- WARNING -- irun " << irun |
3037 |
|
<< " has RUNHEADER_OBT>=RUNTRAILER_OBT " << endl; |
3038 |
|
cout |
3039 |
|
<< " (NB!! in this case some events could be assigned to a wrong run)" |
3040 |
|
<< endl; |
3041 |
|
} |
3042 |
|
// |
3043 |
|
if (DBG) printf(" found \n"); |
3044 |
|
// |
3045 |
|
break; |
3046 |
|
} |
3047 |
|
} // loop over run |
3048 |
|
|
3049 |
|
// -------------------------------------- |
3050 |
|
// if there was no need to update the run |
3051 |
|
// ---> exit with FALSE |
3052 |
|
// -------------------------------------- |
3053 |
|
if (irun == oldrun) |
3054 |
|
return (false); |
3055 |
|
|
3056 |
|
// -------------------------------------- |
3057 |
|
// ... otherwise |
3058 |
|
// ---> exit with TRUE |
3059 |
|
// -------------------------------------- |
3060 |
|
|
3061 |
|
if (SELLI != 2) { |
3062 |
|
/// decrement counters since this event belongs to a new run |
3063 |
|
if (GetTrigLevel2()) { |
3064 |
|
totdltime[0] -= GetTrigLevel2()->dltime[0];//live-time |
3065 |
|
totdltime[1] -= GetTrigLevel2()->dltime[1];//dead-time |
3066 |
|
} |
3067 |
|
totdltime[2]--; //event counter |
3068 |
|
if (DBG) { |
3069 |
|
cout << endl; |
3070 |
|
cout << "n.events : " << totdltime[2] << endl; |
3071 |
|
cout << "RUN LIVE-TIME: " << totdltime[0] * 0.16 << " ms" << endl; |
3072 |
|
cout << "RUN DEAD-TIME: " << totdltime[1] * 0.01 << " ms" << endl; |
3073 |
|
} |
3074 |
|
// add an entry |
3075 |
|
if (run_tree_clone && totdltime[2] > 0) |
3076 |
|
if (run_tree_clone->GetBranch("DeadLiveTime")->GetEntries() < run_tree->GetEntries()) |
3077 |
|
run_tree_clone->GetBranch("DeadLiveTime")->Fill(); |
3078 |
|
// reset counters |
3079 |
|
if ( totdltime[2] > 0 ){ |
3080 |
|
if (GetTrigLevel2()) { |
3081 |
|
totdltime[0] = GetTrigLevel2()->dltime[0];//live-time |
3082 |
|
totdltime[1] = 0; //dead-time |
3083 |
|
} |
3084 |
|
totdltime[2] = 1; //event counter |
3085 |
|
} |
3086 |
|
} |
3087 |
|
|
3088 |
|
if (DBG){ |
3089 |
|
cout << endl << " ))))) UPDATE RUN INFO ((((( @iev " << iev << " run " << GetRunInfo()->ID << " irun " << irun |
3090 |
|
<< endl; |
3091 |
|
|
3092 |
|
printf("2abstime %lld %lld pktnum %d %d obt %lld \n",abstime,prevabstime,pktnum,prevpktnum,obt); |
3093 |
|
printf("2 rth %d %d nevents %d \n",GetRunInfo()->RUNHEADER_TIME,GetRunInfo()->RUNTRAILER_TIME,GetRunInfo()->NEVENTS); |
3094 |
|
printf("2 rto %d %d \n",GetRunInfo()->RUNHEADER_OBT,GetRunInfo()->RUNTRAILER_OBT); |
3095 |
|
printf("2 rto2 %lld %lld \n",gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT),gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT)); |
3096 |
|
printf("2 bo irunentry %lld prevshift %d irun %lld \n",irunentry,prevshift,irun); |
3097 |
|
printf("2 min %lld iev %lld max %lld tot %lld \n",totrunentrymin,iev,totrunentrymax,totrunentry); |
3098 |
|
} |
3099 |
|
|
3100 |
|
return (true); |
3101 |
|
} // need for run upgrade |
3102 |
|
if (DBG) printf("return false\n"); |
3103 |
|
return (false); |
3104 |
|
}// SELLI = 0 SELLI = 2 |
3105 |
|
|
3106 |
|
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
3107 |
|
// if it is a preselected file (there is SelectionList) |
3108 |
|
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
3109 |
|
// irun = run entry relative to the chain |
3110 |
|
// irunt = run entry relative to the tree |
3111 |
|
if (SELLI == 1) { |
3112 |
|
sel_tree->GetEntry(iev);// read irunt from SelectionList |
3113 |
|
irun = irunt + irunoffset[sel_tree->GetTreeNumber()];//NEWNEW |
3114 |
|
if (irun != oldrun) { |
3115 |
|
if (irun < run_tree->GetEntries()) |
3116 |
|
run_tree->GetEntry(irun); |
3117 |
|
// check if the time is ok (with merged files it is not...) |
3118 |
|
// if not loop over run and look for the proper entry |
3119 |
|
bool SECONDO_GIRO = false; |
3120 |
|
// Long64_t irun_start = irun; |
3121 |
|
int offset_start = irunoffset[sel_tree->GetTreeNumber()]; |
3122 |
|
while (((!(abstime >= GetRunInfo()->RUNHEADER_TIME && // check on absolute time (s) |
3123 |
|
abstime <= GetRunInfo()->RUNTRAILER_TIME) |
3124 |
|
// || |
3125 |
|
// !(obt >= GetRunInfo()->RUNHEADER_OBT && // additional check on OBT (ms) |
3126 |
|
// obt <= GetRunInfo()->RUNTRAILER_OBT) |
3127 |
|
) || GetRunInfo()->NEVENTS == 0) |
3128 |
|
// && irun < run_tree->GetEntries() |
3129 |
|
) { |
3130 |
|
|
3131 |
|
if (DBG) { |
3132 |
|
cout << " (test) "; |
3133 |
|
cout << " tree " << sel_tree->GetTreeNumber(); |
3134 |
|
cout << " irunt " << irunt; |
3135 |
|
cout << " offset " << irunoffset[sel_tree->GetTreeNumber()]; |
3136 |
|
cout << " abs " << abstime; |
3137 |
|
cout << " >> " << GetRunInfo()->RUNHEADER_TIME << " " << GetRunInfo()->RUNTRAILER_TIME; |
3138 |
|
cout << " obt " << obt; |
3139 |
|
cout << " >> " << GetRunInfo()->RUNHEADER_OBT << " " << GetRunInfo()->RUNTRAILER_OBT; |
3140 |
|
cout << " *** JUMP RUN *** irun " << irun; |
3141 |
|
cout << endl; |
3142 |
|
} |
3143 |
|
// irun++; |
3144 |
|
irunoffset[sel_tree->GetTreeNumber()]++; |
3145 |
|
irun = irunt + irunoffset[sel_tree->GetTreeNumber()];//NEWNEW |
3146 |
|
if (irun == run_tree->GetEntries() && SECONDO_GIRO) { |
3147 |
|
// if(irun == irun_start ){ |
3148 |
|
cout << " ...grrrvzzkhhhajsdkj!!!! " << endl; |
3149 |
|
irunoffset[sel_tree->GetTreeNumber()] = offset_start; |
3150 |
|
return false; |
3151 |
|
} |
3152 |
|
if (irun >= run_tree->GetEntries() || irun < 0) { |
3153 |
|
cout << "irun = " << irun << " >> search from the beginning... <<" << endl; |
3154 |
|
SECONDO_GIRO = true; |
3155 |
|
irun = 0; |
3156 |
|
irunoffset[sel_tree->GetTreeNumber()] = -irunt; |
3157 |
|
} |
3158 |
|
run_tree->GetEntry(irun); |
3159 |
|
} |
3160 |
|
|
3161 |
|
if (DBG) { |
3162 |
|
cout << " (test) "; |
3163 |
|
cout << " tree " << sel_tree->GetTreeNumber(); |
3164 |
|
cout << " irunt " << irunt; |
3165 |
|
cout << " offset " << irunoffset[sel_tree->GetTreeNumber()]; |
3166 |
|
cout << " abs " << abstime; |
3167 |
|
cout << " >> " << GetRunInfo()->RUNHEADER_TIME << " " << GetRunInfo()->RUNTRAILER_TIME; |
3168 |
|
cout << " obt " << obt; |
3169 |
|
cout << " >> " << GetRunInfo()->RUNHEADER_OBT << " " << GetRunInfo()->RUNTRAILER_OBT; |
3170 |
|
} |
3171 |
|
if (DBG) |
3172 |
|
cout << endl; |
3173 |
|
if (DBG) |
3174 |
|
cout << endl << " ))))) UPDATE RUN INFO ((((( @iev " << iev << " run " << GetRunInfo()->ID << " (run-entry " |
3175 |
|
<< irun << ")" << endl; |
3176 |
|
// ---------------------------------------------------- |
3177 |
|
// update the tracker parameters |
3178 |
|
// (non ho trovato nessun altro modo sicuro di farlo...) |
3179 |
|
// ---------------------------------------------------- |
3180 |
|
if (!dbc || (dbc && !dbc->IsConnected())) |
3181 |
|
SetDBConnection(); |
3182 |
|
TrkParams::Set(GetRunInfo(), dbc); |
3183 |
|
if (dbc){ |
3184 |
|
dbc->Close(); |
3185 |
|
delete dbc; |
3186 |
|
dbc=0; |
3187 |
|
}; |
3188 |
|
// cout << endl; |
3189 |
|
prevshift = 0; |
3190 |
|
return true; |
3191 |
|
} |
3192 |
|
return false; |
3193 |
|
} |
3194 |
|
|
3195 |
|
return false; |
3196 |
|
// |
3197 |
|
} |
3198 |
|
|
3199 |
|
Bool_t PamLevel2::UpdateRunInfo_bckw_compat(Long64_t iev) { |
3200 |
|
|
3201 |
|
if (!run_tree) { |
3202 |
|
cout << " Bool_t PamLevel2::UpdateRunInfo(ULong64_t iev) -- ERROR -- run tree not loaded" << endl; |
3203 |
|
return false; |
3204 |
|
} |
3205 |
|
if (run_tree->GetEntries() <= 0) { |
3206 |
|
cout << " Bool_t PamLevel2::UpdateRunInfo(ULong64_t iev) -- ERROR -- run tree is empty" << endl; |
3207 |
|
return (false); |
3208 |
|
} |
3209 |
|
|
3210 |
|
printf("ciccio\n"); |
3211 |
|
|
3212 |
|
Int_t oldrun = irun; // store current run index |
3213 |
|
|
3214 |
|
// ----------------------------------------------------------------------- |
3215 |
|
// the first time the routine is called, set run search from the beginning |
3216 |
|
// ----------------------------------------------------------------------- |
3217 |
|
|
3218 |
|
if (irun < 0) { |
3219 |
|
irun = 0LL; |
3220 |
|
irunt = 0LL; |
3221 |
|
irunentry = 0; |
3222 |
|
prevshift = 0; |
3223 |
|
prevabstime = 0; |
3224 |
|
prevpktnum = 0; |
3225 |
|
abstime = 0ULL; |
3226 |
|
pktnum = 0; |
3227 |
|
isFragment = false; |
3228 |
|
run_tree->GetEntry(irun); |
3229 |
|
if (!GetOrbitalInfo()) |
3230 |
|
cout << "** WARNING ** missing OrbitalInfo ---> run info might be not correctly updated " << endl; |
3231 |
|
if (gltsync) |
3232 |
|
delete gltsync; //Emiliano |
3233 |
|
if (!dbc || (dbc && !dbc->IsConnected())) |
3234 |
|
SetDBConnection(); //Emiliano |
3235 |
|
gltsync = new GL_TIMESYNC(GetRunInfo()->ID_ROOT_L0, "ID", dbc, false); //Emiliano // the "false" means not to use level0 file (not necessary here) |
3236 |
|
if (dbc){ |
3237 |
|
dbc->Close();// Emiliano |
3238 |
|
delete dbc; |
3239 |
|
dbc=0; |
3240 |
|
}; |
3241 |
|
}; |
3242 |
|
// --------------------------------------------------------------- |
3243 |
|
// retrieve OBT and absolute time of the event |
3244 |
|
// --------------------------------------------------------------- |
3245 |
|
// ULong64_t abstime = 0LL; |
3246 |
|
// ULong64_t obt = 0LL; // Emiliano |
3247 |
|
Long64_t obt = 0LL; // Emiliano, Long64_t GL_TIMESYNC::DBobt(UInt_t obt) since depending on the situation OBT is lowered or boosted |
3248 |
|
// UInt_t pkt = 0; |
3249 |
|
prevabstime = abstime; |
3250 |
|
prevpktnum = pktnum; |
3251 |
|
if (GetOrbitalInfo()) { |
3252 |
|
abstime = GetOrbitalInfo()->absTime; |
3253 |
|
obt = gltsync->DBobt(GetOrbitalInfo()->OBT); // Emiliano |
3254 |
|
pktnum = GetOrbitalInfo()->pkt_num; // Emiliano |
3255 |
|
} |
3256 |
|
else { |
3257 |
|
abstime = GetRunInfo()->RUNHEADER_TIME; |
3258 |
|
obt = gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT); // Emiliano |
3259 |
|
pktnum = GetRunInfo()->RUNHEADER_PKT; // Emiliano |
3260 |
|
} |
3261 |
|
|
3262 |
|
printf("0abstime %lld %lld pktnum %d %d obt %lld \n",abstime,prevabstime,pktnum,prevpktnum,obt); |
3263 |
|
printf("0rth %d %d nevents %d \n",GetRunInfo()->RUNHEADER_TIME,GetRunInfo()->RUNTRAILER_TIME,GetRunInfo()->NEVENTS); |
3264 |
|
printf("0rto %d %d \n",GetRunInfo()->RUNHEADER_OBT,GetRunInfo()->RUNTRAILER_OBT); |
3265 |
|
printf("0rto2 %lld %lld \n",gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT),gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT)); |
3266 |
|
printf("0irunentry %lld prevshift %d irun %lld \n",irunentry,prevshift,irun); |
3267 |
|
|
3268 |
|
|
3269 |
|
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
3270 |
|
// if it is a full file (not preselected) |
3271 |
|
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
3272 |
|
if (SELLI == 0 || SELLI == 2) { // Emiliano |
3273 |
|
|
3274 |
|
// --------------------------------------------------------------- |
3275 |
|
// increment dead and live-time counters |
3276 |
|
// (only when reading a file not preselected) |
3277 |
|
// --------------------------------------------------------------- |
3278 |
|
if (SELLI == 0) { |
3279 |
|
if (GetTrigLevel2()) { |
3280 |
|
totdltime[0] += GetTrigLevel2()->dltime[0]; |
3281 |
|
totdltime[1] += GetTrigLevel2()->dltime[1]; |
3282 |
|
} |
3283 |
|
totdltime[2]++; |
3284 |
|
} |
3285 |
|
|
3286 |
|
// |
3287 |
|
bool fromfirst = true; // first loop over runs |
3288 |
|
bool fragmentcheck = true; |
3289 |
|
|
3290 |
// ------------------------------------------------------ |
// ------------------------------------------------------ |
3291 |
// loop over runs to find the one that contains the event |
// loop over runs to find the one that contains the event |
3292 |
// ------------------------------------------------------ |
// ------------------------------------------------------ |
3293 |
while (( |
while ( |
3294 |
// ( |
/*( !(abstime >= GetRunInfo()->RUNHEADER_TIME && // check on absolute time (s) |
3295 |
// !(abstime >= GetRunInfo()->RUNHEADER_TIME && // check on absolute time (s) |
abstime <= GetRunInfo()->RUNTRAILER_TIME) |
3296 |
// abstime <= GetRunInfo()->RUNTRAILER_TIME) && |
|| !(obt >= gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT) && // additional check on OBT (ms) // Emiliano |
3297 |
// !(obt >= GetRunInfo()->RUNHEADER_OBT && // additional check on OBT (ms) |
obt <= gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT)) // Emiliano |
3298 |
// obt <= GetRunInfo()->RUNTRAILER_OBT) |
|| GetRunInfo()->NEVENTS == 0 |
3299 |
// ) |
|| (isFragment && fragmentcheck && (abstime <prevabstime && pktnum < prevpktnum) ) // or it is a fragment and there is a jump in abstime and pktnum |
3300 |
|
|| !(irunentry <= GetRunInfo()->NEVENTS - 1 - prevshift) |
3301 |
!(abstime >= GetRunInfo()->RUNHEADER_TIME && // check on absolute time (s) |
) && irun < run_tree->GetEntries()) {*/ |
3302 |
abstime <= GetRunInfo()->RUNTRAILER_TIME) || !(obt >= gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT) && // additional check on OBT (ms) // Emiliano |
(abstime < GetRunInfo()->RUNHEADER_TIME // check on absolute time (s) |
3303 |
obt <= gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT)) // Emiliano |
|| abstime > GetRunInfo()->RUNTRAILER_TIME |
3304 |
|| GetRunInfo()->NEVENTS == 0 |
|| obt < gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT) // additional check on OBT (ms) |
3305 |
// || !(irunentry < GetRunInfo()->NEVENTS-1-prevshift) // ERRORE!!! fa saltare i run con 1 evento |
|| obt > gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT) // Emiliano |
3306 |
|| !(irunentry <= GetRunInfo()->NEVENTS - 1 - prevshift)) && irun < run_tree->GetEntries()) { |
|| GetRunInfo()->NEVENTS == 0 |
3307 |
|
|| (isFragment && fragmentcheck && (abstime <prevabstime && pktnum < prevpktnum) ) // or it is a fragment and there is a jump in abstime and pktnum |
3308 |
|
|| irunentry > (GetRunInfo()->NEVENTS - 1 - prevshift) |
3309 |
|
) && irun < run_tree->GetEntries()) { |
3310 |
|
|
3311 |
// if( !(abstime >= GetRunInfo()->RUNHEADER_TIME &&abstime <= GetRunInfo()->RUNTRAILER_TIME) )cout << "ABS TIME "<<abstime << " " <<GetRunInfo()->RUNTRAILER_TIME <<endl; |
// if( !(abstime >= GetRunInfo()->RUNHEADER_TIME &&abstime <= GetRunInfo()->RUNTRAILER_TIME) )cout << "ABS TIME "<<abstime << " " <<GetRunInfo()->RUNTRAILER_TIME <<endl; |
3312 |
// if( !(obt >= GetRunInfo()->RUNHEADER_OBT && obt <= GetRunInfo()->RUNTRAILER_OBT) )cout << "OBT TIME "<< obt <<" "<< GetRunInfo()->RUNTRAILER_OBT << endl; |
// if( !(obt >= GetRunInfo()->RUNHEADER_OBT && obt <= GetRunInfo()->RUNTRAILER_OBT) )cout << "OBT TIME "<< obt <<" "<< GetRunInfo()->RUNTRAILER_OBT << endl; |
3314 |
// if( !(irunentry <= GetRunInfo()->NEVENTS-1-prevshift) ) cout << "irunentry > "<<GetRunInfo()->NEVENTS-1-prevshift << endl; |
// if( !(irunentry <= GetRunInfo()->NEVENTS-1-prevshift) ) cout << "irunentry > "<<GetRunInfo()->NEVENTS-1-prevshift << endl; |
3315 |
// - - - - - - - - - - - - - |
// - - - - - - - - - - - - - |
3316 |
// irunentry = position of current entry, relative to the run |
// irunentry = position of current entry, relative to the run |
3317 |
// prevshift = shift needed to synchronize l0 and l2 data (nested events) |
// prevshift = shift needed to synchronize L0 and L2 data (nested events) |
3318 |
// - - - - - - - - - - - - - |
// - - - - - - - - - - - - - |
3319 |
|
|
3320 |
|
|
3321 |
|
if ((( |
3322 |
|
// ( |
3323 |
|
// !(abstime >= GetRunInfo()->RUNHEADER_TIME && // check on absolute time (s) |
3324 |
|
// abstime <= GetRunInfo()->RUNTRAILER_TIME) && |
3325 |
|
// !(obt >= GetRunInfo()->RUNHEADER_OBT && // additional check on OBT (ms) |
3326 |
|
// obt <= GetRunInfo()->RUNTRAILER_OBT) |
3327 |
|
// ) |
3328 |
|
!(abstime >= GetRunInfo()->RUNHEADER_TIME && // check on absolute time (s) |
3329 |
|
abstime <= GetRunInfo()->RUNTRAILER_TIME) |
3330 |
|
|| !(obt >= gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT) && // additional check on OBT (ms) // Emiliano |
3331 |
|
obt <= gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT)) // Emiliano |
3332 |
|
|| GetRunInfo()->NEVENTS == 0 |
3333 |
|
// || !(irunentry < GetRunInfo()->NEVENTS-1-prevshift) // ERRORE!!! fa saltare i run con 1 evento |
3334 |
|
|| (isFragment && fragmentcheck && (abstime <prevabstime && pktnum < prevpktnum) ) // or it is a fragment and there is a jump in abstime and pktnum |
3335 |
|
|| !(irunentry <= GetRunInfo()->NEVENTS - 1 - prevshift) |
3336 |
|
) && irun < run_tree->GetEntries())) printf(" break \n"); |
3337 |
|
|
3338 |
// ----------------------------------------- |
// ----------------------------------------- |
3339 |
// store dead and live-time of previous run |
// store dead and live-time of previous run |
3340 |
// ----------------------------------------- |
// ----------------------------------------- |
3341 |
// if(SELLI==0){ |
// if(SELLI==0){ |
3342 |
|
// fragmentcheck = false; |
3343 |
|
printf("abstime %lld %lld pktnum %d %d obt %lld \n",abstime,prevabstime,pktnum,prevpktnum,obt); |
3344 |
|
printf("rth %d %d nevents %d \n",GetRunInfo()->RUNHEADER_TIME,GetRunInfo()->RUNTRAILER_TIME,GetRunInfo()->NEVENTS); |
3345 |
|
printf("rto %d %d \n",GetRunInfo()->RUNHEADER_OBT,GetRunInfo()->RUNTRAILER_OBT); |
3346 |
|
printf("rto2 %lld %lld \n",gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT),gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT)); |
3347 |
|
printf("irunentry %lld prevshift %d irun %lld \n",irunentry,prevshift,irun); |
3348 |
if (SELLI != 2) { |
if (SELLI != 2) { |
3349 |
if (fromfirst) { |
if (fromfirst) { |
3350 |
if (oldrun == irun) { |
if (oldrun == irun) { |
3394 |
// ----------------------------------------------------- |
// ----------------------------------------------------- |
3395 |
cout << "Bool_t PamLevel2::UpdateRunInfo(Long64_t iev) -- ERROR -- event entry #" << iev |
cout << "Bool_t PamLevel2::UpdateRunInfo(Long64_t iev) -- ERROR -- event entry #" << iev |
3396 |
<< " does not belong to any run (should not happen)" << endl; |
<< " does not belong to any run (should not happen)" << endl; |
3397 |
|
irun = 0LL; |
3398 |
return false; |
return false; |
3399 |
} |
} |
3400 |
// ----------------------------------------- |
// ----------------------------------------- |
3427 |
delete dbc; |
delete dbc; |
3428 |
dbc=0; |
dbc=0; |
3429 |
}; |
}; |
3430 |
|
if (!(( |
3431 |
|
// ( |
3432 |
|
// !(abstime >= GetRunInfo()->RUNHEADER_TIME && // check on absolute time (s) |
3433 |
|
// abstime <= GetRunInfo()->RUNTRAILER_TIME) && |
3434 |
|
// !(obt >= GetRunInfo()->RUNHEADER_OBT && // additional check on OBT (ms) |
3435 |
|
// obt <= GetRunInfo()->RUNTRAILER_OBT) |
3436 |
|
// ) |
3437 |
|
!(abstime >= GetRunInfo()->RUNHEADER_TIME && // check on absolute time (s) |
3438 |
|
abstime <= GetRunInfo()->RUNTRAILER_TIME) |
3439 |
|
|| !(obt >= gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT) && // additional check on OBT (ms) // Emiliano |
3440 |
|
obt <= gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT)) // Emiliano |
3441 |
|
|| GetRunInfo()->NEVENTS == 0 |
3442 |
|
// || !(irunentry < GetRunInfo()->NEVENTS-1-prevshift) // ERRORE!!! fa saltare i run con 1 evento |
3443 |
|
|| (isFragment && fragmentcheck && (abstime <prevabstime && pktnum < prevpktnum) ) // or it is a fragment and there is a jump in abstime and pktnum |
3444 |
|
|| !(irunentry <= GetRunInfo()->NEVENTS - 1 - prevshift) |
3445 |
|
) && irun < run_tree->GetEntries())) printf(" ECCE RUN!!!!!!!!!!!!! \n"); |
3446 |
|
|
3447 |
|
printf("Qabstime %lld %lld pktnum %d %d obt %lld \n",abstime,prevabstime,pktnum,prevpktnum,obt); |
3448 |
|
printf("Qrth %d %d nevents %d \n",GetRunInfo()->RUNHEADER_TIME,GetRunInfo()->RUNTRAILER_TIME,GetRunInfo()->NEVENTS); |
3449 |
|
printf("Qrto %d %d \n",GetRunInfo()->RUNHEADER_OBT,GetRunInfo()->RUNTRAILER_OBT); |
3450 |
|
printf("Qirunentry %lld prevshift %d irun %lld \n",irunentry,prevshift,irun); |
3451 |
|
|
3452 |
|
|
3453 |
if (gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT) > gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT)) { // Emiliano |
if (gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT) > gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT)) { // Emiliano |
3454 |
cout << "Bool_t PamLevel2::UpdateRunInfo(Long64_t iev) -- WARNING -- irun " << irun |
cout << "Bool_t PamLevel2::UpdateRunInfo(Long64_t iev) -- WARNING -- irun " << irun |
3455 |
<< " has RUNHEADER_OBT>=RUNTRAILER_OBT " << endl; |
<< " has RUNHEADER_OBT>=RUNTRAILER_OBT " << endl; |
3480 |
if (DBG) |
if (DBG) |
3481 |
cout << endl << " ))))) UPDATE RUN INFO ((((( @iev " << iev << " run " << GetRunInfo()->ID << " irun " << irun |
cout << endl << " ))))) UPDATE RUN INFO ((((( @iev " << iev << " run " << GetRunInfo()->ID << " irun " << irun |
3482 |
<< endl; |
<< endl; |
3483 |
|
|
3484 |
|
isFragment = false; |
3485 |
|
if ( GetRunInfo()->ID_RUN_FRAG != 0 && GetRunInfo()->ID_RUN_FRAG != GetRunInfo()->ID ) isFragment = true; |
3486 |
// ---------------------------------------------------- |
// ---------------------------------------------------- |
3487 |
// update the tracker parameters |
// update the tracker parameters |
3488 |
// (non ho trovato nessun altro modo sicuro di farlo...) |
// (non ho trovato nessun altro modo sicuro di farlo...) |
3601 |
return false; |
return false; |
3602 |
// |
// |
3603 |
} |
} |
3604 |
; |
|
3605 |
/** |
/** |
3606 |
* Update the runinfo informations (to be used to have Run infos event by event basis) |
* Update the runinfo informations (to be used to have Run infos event by event basis) |
3607 |
* @param run Pointer to the chain/tree which contains run infos |
* @param run Pointer to the chain/tree which contains run infos |
3610 |
Bool_t PamLevel2::UpdateRunInfo(TTree *run, Long64_t iev) { |
Bool_t PamLevel2::UpdateRunInfo(TTree *run, Long64_t iev) { |
3611 |
return (UpdateRunInfo((TChain*) run, iev)); |
return (UpdateRunInfo((TChain*) run, iev)); |
3612 |
} |
} |
3613 |
; |
|
3614 |
|
|
3615 |
//-------------------------------------- |
//-------------------------------------- |
3616 |
// |
// |