25 #include <TGeoManager.h>
26 #include <TRefArray.h>
29 #include "AliAnalysisTask.h"
30 #include "AliAnalysisManager.h"
31 #include "AliESDEvent.h"
32 #include "AliAODEvent.h"
33 #include "AliVEvent.h"
34 #include "AliESDInputHandler.h"
35 #include "AliAODInputHandler.h"
36 #include "AliESDpid.h"
37 #include "AliTOFcalib.h"
38 #include "AliCDBManager.h"
39 #include "AliRunTag.h"
41 #include "AliTOFT0maker.h"
42 #include "AliVCluster.h"
43 #include "AliESDCaloCluster.h"
44 #include "AliVCaloCells.h"
45 #include "AliESDCaloCells.h"
46 #include "AliAODCaloCluster.h"
47 #include "AliAODCaloCells.h"
48 #include "AliEMCALGeometry.h"
62 : AliAnalysisTaskSE(name),
79 fReferenceRunByRunFileName(),
80 fPileupFromSPD(kFALSE),
100 fhTOFT0vsEventNumber(0),
120 fhRawTimeEntriesBC(),
124 fhRawTimeEntriesLGBC(),
160 DefineInput(0, TChain::Class());
164 DefineOutput(1, TList::Class());
187 AliFatal(
"*** NO REFERENCE FILE");
189 AliDebug(1,
"*** OK TFILE");
194 if(
fhAllAverageBC[i]==0x0) AliFatal(Form(
"Reference histogram for BC%d does not exist",i));
195 if(
fhAllAverageBC[i]->GetEntries()==0)AliWarning(Form(
"fhAllAverageLGBC[%d]->GetEntries() = 0",i));
197 if(
fhAllAverageLGBC[i]==0x0) AliFatal(Form(
"Reference LG histogram for BC%d does not exist",i));
198 if(
fhAllAverageLGBC[i]->GetEntries()==0)AliFatal(Form(
"fhAllAverageLGBC[%d]->GetEntries() = 0",i));
201 AliDebug(1,Form(
"hAllAverage entries BC0 %d", (Int_t)
fhAllAverageBC[0]->GetEntries() ));
202 AliDebug(1,Form(
"hAllAverage entries BC2 %d",(Int_t)
fhAllAverageBC[2]->GetEntries() ));
203 AliDebug(1,Form(
"hAllAverageLG entries BC0 %d", (Int_t)
fhAllAverageLGBC[0]->GetEntries() ));
204 AliDebug(1,Form(
"hAllAverageLG entries BC2 %d",(Int_t)
fhAllAverageLGBC[2]->GetEntries() ));
208 AliFatal(
"You require to load reference histos from file but FILENAME is not provided");
222 if(fReferenceFile==0x0) {
223 AliFatal(
"*** NO REFERENCE R-B-R FILE");
225 AliDebug(1,
"*** OK TFILE");
228 AliInfo(Form(
"fReferenceFile in LoadReferenceRunByRunHistos() %p",fReferenceFile));
233 fhRefRuns=(TH1C*) fReferenceFile->Get(
"h0");
234 AliError(Form(
"Reference histogram for run %d does not exist. Use Default",
fRunNumber));
237 if(
fhRefRuns==0x0) AliFatal(Form(
"Default reference histogram does not exist. Run %d.",
fRunNumber));
238 if(
fhRefRuns->GetEntries()==0)AliWarning(
"fhRefRuns->GetEntries() = 0");
239 AliDebug(1,Form(
"hRefRuns entries %d", (Int_t)
fhRefRuns->GetEntries() ));
242 AliFatal(
"You require to load reference run-by-run histos from file but FILENAME is not provided");
254 AliDebug(1,
"AnalysisTaskEMCalTimeCalib::NotifyRun()");
255 AliDebug(2,Form(
"Notify(): EMCal geometry: fgeom = %p, fGeometryName=%s\n ",
fgeom,
fGeometryName.Data()));
259 AliFatal(
"ERROR: InputEvent not set");
262 else AliDebug(1,
"Good, InputEvent set");
282 AliDebug(1,
"AliAnalysisTaskEMCALTimeCalib::SetEMCalGeometry()");
285 AliInfo(Form(
"Get EMCAL geometry name <%s> for run %d",
fgeom->GetName(),
fRunNumber));
288 AliInfo(Form(
"Set EMCAL geometry name to <%s>",
fGeometryName.Data()));
292 AliWarning(
"Make sure the EMCal geometry is set properly !");
294 AliDebug(1,Form(
"EMCal geometry properly set: fGeom = %p, fGeometryName=%s",
fgeom,
fGeometryName.Data()));
305 AliInfo(Form(
"<D> -- Run # = %d",
fRunNumber));
306 AliInfo(
"prepare TOFT0maker!!");
310 AliCDBManager * cdb = AliCDBManager::Instance();
311 cdb->SetDefaultStorage(
"raw://");
314 AliESDpid *extPID=
new AliESDpid();
336 AliDebug(1,
"AliAnalysisTaskEMCALTimeCalib::UserCreateOutputObjects()");
338 const Int_t nChannels = 17664;
352 fhEventType =
new TH1F(
"fhEventType",
"event type",10, 0.,10.);
354 fhEventType ->GetYaxis()->SetTitle(
"Counts (a.u.)");
358 fhEneVsAbsIdHG =
new TH2F(
"fhEneVsAbsIdHG",
"energy vs ID for HG",1000,0,18000,200,0,10);
359 fhEneVsAbsIdLG =
new TH2F(
"fhEneVsAbsIdLG",
"energy vs ID for LG",1000,0,18000,200,0,40);
361 for (Int_t i = 0; i <
kNBCmask ; i++)
366 Form(
"cell Sum Square time HG, BC %d ", i),
367 nChannels,0.,(Double_t)nChannels);
371 fhTimeSum[i] =
new TH1F(Form(
"hTimeSum%d", i),
372 Form(
"cell Sum time HG, BC %d ", i),
373 nChannels,0.,(Double_t)nChannels);
377 fhTimeEnt[i] =
new TH1F(Form(
"hTimeEnt%d", i),
378 Form(
"cell Entries HG, BC %d ", i),
379 nChannels,0.,(Double_t)nChannels);
380 fhTimeEnt[i]->SetYTitle(
"Entries for Time ");
385 Form(
"cell Sum Square time LG, BC %d ", i),
386 nChannels,0.,(Double_t)nChannels);
391 Form(
"cell Sum time LG, BC %d ", i),
392 nChannels,0.,(Double_t)nChannels);
397 Form(
"cell Entries LG, BC %d ", i),
398 nChannels,0.,(Double_t)nChannels);
405 Form(
"cell raw time vs ID for high gain BC %d ", i),
411 Form(
"sum of cell raw time for high gain BC %d ", i),
412 nChannels,0.,(Double_t)nChannels);
417 Form(
"No. entries of cells raw time for high gain BC %d ", i),
418 nChannels,0.,(Double_t)nChannels);
423 Form(
"sum of (cell raw time)^2 for high gain BC %d ", i),
424 nChannels,0.,(Double_t)nChannels);
430 Form(
"cell raw time vs ID for low gain BC %d ", i),
436 Form(
"sum of cell raw time for low gain BC %d ", i),
437 nChannels,0.,(Double_t)nChannels);
442 Form(
"No. entries of cells raw time for low gain BC %d ", i),
443 nChannels,0.,(Double_t)nChannels);
448 Form(
"sum of (cell raw time)^2 for low gain BC %d ", i),
449 nChannels,0.,(Double_t)nChannels);
454 for (Int_t j = 0; j <
kNSM ; j++)
457 fhTimeDsupBC[j][i]=
new TH2F(Form(
"SupMod%dBC%d",j,i), Form(
"SupMod %d time_vs_E BC %d",j,i),
fEnergyNbins,
fEnergyMin,
fEnergyMax,
fPassTimeNbins,
fPassTimeMin,
fPassTimeMax);
463 for (Int_t jj = 0; jj <
kNSM ; jj++)
486 for (Int_t i = 0; i <
kNBCmask ; i++)
506 for (Int_t j = 0; j <
kNSM ; j++){
511 for (Int_t j = 0; j <
kNSM ; j++)
529 AliDebug(2,Form(
"UserExec: EMCal geometry: fgeom = %p fGeometryName %s",
fgeom,
fGeometryName.Data()));
530 AliVEvent *
event = InputEvent();
533 AliDebug(2,Form(
"TOF time from header %f ps",event->GetTOFHeader()->GetDefaultEventTimeVal()));
534 fhEvtTimeHeader->Fill(event->GetTOFHeader()->GetDefaultEventTimeVal());
538 AliError(
"ESD not available, exit");
544 if(event->IsPileupFromSPD(3,0.8,3.,2.,5.)){
545 AliDebug(1,
"Event: PileUp skip.");
551 TString triggerclasses =
event->GetFiredTriggerClasses();
552 if(triggerclasses==
"") {
557 Int_t eventType = ((AliVHeader*)event->GetHeader())->GetEventType();
559 AliDebug(1,Form(
"Triggerclasses %s, eventType %d",triggerclasses.Data(),eventType));
568 Bool_t bL1G = kFALSE;
569 Bool_t bL1J = kFALSE;
571 if(triggerclasses.Contains(
"CINT7-B-NOPF-ALLNOTRD") ||
572 triggerclasses.Contains(
"CINT7-I-NOPF-ALLNOTRD") ||
573 triggerclasses.Contains(
"CINT1-I-NOPF-ALLNOTRD") ||
574 triggerclasses.Contains(
"CINT1-B-NOPF-ALLNOTRD") ||
575 triggerclasses.Contains(
"CINT8") ||
576 triggerclasses.Contains(
"CINT7") ||
577 triggerclasses.Contains(
"CPBI2_B1-B-NOPF-ALLNOTRD") ) bMB = kTRUE;
579 if(triggerclasses.Contains(
"CEMC7-B-NOPF-CENTNOTRD") ||
580 triggerclasses.Contains(
"CEMC1-B-NOPF-CENTNOTRD") ||
581 triggerclasses.Contains(
"CEMC7") ||
582 triggerclasses.Contains(
"CEMC8") ||
583 triggerclasses.Contains(
"CEMC8-B-NOPF-CENTNOTRD") ) bL0 = kTRUE;
585 if(triggerclasses.Contains(
"CEMC7EG1-B-NOPF-CENTNOTRD") ||
586 triggerclasses.Contains(
"CEMC7EG2-B-NOPF-CENTNOTRD") ||
587 triggerclasses.Contains(
"CEMC8EG1-B-NOPF-CENTNOTRD") ||
588 triggerclasses.Contains(
"CEMC8EGA") ||
589 triggerclasses.Contains(
"CEMC7EGA") ||
590 triggerclasses.Contains(
"CPBI2EGA") ) bL1G = kTRUE;
593 if(triggerclasses.Contains(
"CEMC7EJ1-B-NOPF-CENTNOTRD") ||
594 triggerclasses.Contains(
"CEMC7EJ2-B-NOPF-CENTNOTRD") ||
595 triggerclasses.Contains(
"CEMC8EJ1-B-NOPF-CENTNOTRD") ||
596 triggerclasses.Contains(
"CEMC7EJE") ||
597 triggerclasses.Contains(
"CEMC8EJE") ||
598 triggerclasses.Contains(
"CPBI2EJE") ) bL1J = kTRUE;
600 if( bL1G || bL1J || bL0 ){
fhEventType->Fill(4.5);}
615 Double_t calcolot0=0.0;
617 Double_t* timeTOFtable;
618 timeTOFtable=
fTOFmaker->ComputeT0TOF(dynamic_cast<AliESDEvent*>(event));
619 AliDebug(2,Form(
"TOF time %f ps, resolution %f ps, tracks at TOF %f/used %f",timeTOFtable[0],timeTOFtable[1],timeTOFtable[3],timeTOFtable[7]));
621 calcolot0=timeTOFtable[0];
625 AliWarning(
"<E> fhcalcEvtTime not available");
630 if(calcolot0 != 0 && event->GetTOFHeader()->GetDefaultEventTimeVal() != 0 )
631 fhEvtTimeDiff->Fill(calcolot0-event->GetTOFHeader()->GetDefaultEventTimeVal());
633 TRefArray* caloClusters =
new TRefArray();
634 event->GetEMCALClusters(caloClusters);
637 Int_t BunchCrossNumber =
event->GetBunchCrossNumber();
640 Float_t offsetPerSM=0.;
644 nBC = BunchCrossNumber%4;
647 Float_t timeBCoffset = 0.;
650 Int_t nclus = caloClusters->GetEntries();
651 AliDebug(1,Form(
"###########Bunch Cross nb = %d nclus = %d",nBC,nclus ));
655 AliVCaloCells &cells= *(
event->GetEMCALCells());
657 Int_t nSupMod=-1, nModule=-1;
658 Int_t iphi=-1, ieta=-1, nIphi=-1, nIeta=-1;
662 Bool_t isHighGain=kTRUE;
664 for (Int_t icl = 0; icl < nclus; icl++) {
666 AliVCluster* clus = (AliVCluster*)caloClusters->At(icl);
671 UShort_t * index = clus->GetCellsAbsId() ;
673 for(Int_t i = 0; i < clus->GetNCells() ; i++) {
675 hkdtime = cells.GetCellTime(absId) * 1.0e09;
676 amp = cells.GetCellAmplitude(absId) ;
677 isHighGain = cells.GetCellHighGain(absId);
698 fgeom->GetCellIndex(absId, nSupMod, nModule, nIphi, nIeta);
699 fgeom->GetCellPhiEtaIndexInSModule(nSupMod,nModule,nIphi,nIeta, iphi,ieta);
708 fhTimeVsBC->Fill(1.*BunchCrossNumber,hkdtime-timeBCoffset);
710 if(isHighGain==kTRUE){
714 AliFatal(Form(
"Reference histogram for BC%d not properly loaded",nBC));
720 AliFatal(Form(
"Reference LG histogram for BC%d not properly loaded",nBC));
729 L1phase = (Int_t)(
fhRefRuns->GetBinContent(nSupMod));
731 offsetPerSM = (nBC - L1phase)*25;
733 offsetPerSM = (nBC - L1phase + 4)*25;
735 AliFatal(
"Reference histogram run-by-run not properly loaded");
740 fhTimeDsup[nSupMod]->Fill(amp,hkdtime-offset-offsetPerSM);
741 fhTimeDsupBC[nSupMod][nBC]->Fill(amp,hkdtime-offset-offsetPerSM);
750 hkdtime = hkdtime-timeBCoffset;
752 hkdtimecorr= hkdtime-offset-offsetPerSM;
767 if(offsetPerSM!=0) hkdtime=hkdtime-offsetPerSM;
787 caloClusters->Delete();
799 fOutputList =
dynamic_cast<TList*
> (GetOutputData(1));
806 AliDebug(1,
"ERROR: Output list not available");
816 Int_t nCells = clus->GetNCells();
821 AliDebug(1,
"very big cluster with enormous energy - cluster rejected");
827 Double_t lambda0=clus->GetM02();
829 AliDebug(1,
"lambda0 loose cut failed - cluster rejected");
834 Double_t Dx=clus->GetTrackDx();
835 Double_t Dz=clus->GetTrackDz();
836 Double_t Rtrack = TMath::Sqrt(Dx*Dx+Dz*Dz);
839 AliDebug(1,
"track matched - cluster rejected");
845 AliDebug(1,
"single cell cluster - cluster rejected");
851 AliDebug(1,
"cluster energy < 1 GeV- cluster rejected");
859 AliDebug(1,
"lambda0 strict cut failed - cluster rejected");
873 UShort_t * index = clus->GetCellsAbsId() ;
874 AliVCaloCells &cells= *(InputEvent()->GetEMCALCells());
875 for(Int_t i = 0; i < clus->GetNCells() ; i++) {
876 if(cells.GetCellHighGain(index[i])==kFALSE)
return kTRUE;
887 if(nSupMod < 10 || (nSupMod >= 12 && nSupMod <18) )
889 if (0<=irow&&irow<8) iRCU=0;
890 else if (8<=irow&&irow<16 && 0<=icol&&icol<24) iRCU=0;
893 else if (8<=irow&&irow<16 && 24<=icol&&icol<48) iRCU=1;
895 else if (16<=irow&&irow<24) iRCU=1;
897 if (nSupMod%2==1) iRCU = 1 - iRCU;
907 AliFatal(Form(
"Wrong EMCAL/DCAL RCU number = %d\n", iRCU));
954 TFile *
file =
new TFile(inputFile.Data());
960 TList *
list=(TList*)file->Get(
"chistolist");
971 TH1F *hAllTimeAvBC[4];
972 TH1F *hAllTimeRMSBC[4];
978 TH1F *hAllTimeAvLGBC[4];
979 TH1F *hAllTimeRMSLGBC[4];
982 for(Int_t i=0;i<4;i++){
983 h1[i]=(TH1F *)list->FindObject(Form(
"RawTimeSumBC%d",i));
984 h2[i]=(TH1F *)list->FindObject(Form(
"RawTimeEntriesBC%d",i));
985 h3[i]=(TH1F *)list->FindObject(Form(
"RawTimeSumSqBC%d",i));
987 h4[i]=(TH1F *)list->FindObject(Form(
"RawTimeSumLGBC%d",i));
988 h5[i]=(TH1F *)list->FindObject(Form(
"RawTimeEntriesLGBC%d",i));
989 h6[i]=(TH1F *)list->FindObject(Form(
"RawTimeSumSqLGBC%d",i));
992 for(Int_t i=0;i<4;i++){
993 h1[i]=(TH1F *)list->FindObject(Form(
"hTimeSum%d",i));
994 h2[i]=(TH1F *)list->FindObject(Form(
"hTimeEnt%d",i));
995 h3[i]=(TH1F *)list->FindObject(Form(
"hTimeSumSq%d",i));
997 h4[i]=(TH1F *)list->FindObject(Form(
"hTimeLGSum%d",i));
998 h5[i]=(TH1F *)list->FindObject(Form(
"hTimeLGEnt%d",i));
999 h6[i]=(TH1F *)list->FindObject(Form(
"hTimeLGSumSq%d",i));
1004 for(Int_t i=0;i<4;i++){
1005 hAllTimeAvBC[i]=
new TH1F(Form(
"hAllTimeAvBC%d",i),Form(
"hAllTimeAvBC%d",i),h1[i]->GetNbinsX(),h1[i]->GetXaxis()->GetXmin(),h1[i]->GetXaxis()->GetXmax());
1006 hAllTimeRMSBC[i]=
new TH1F(Form(
"hAllTimeRMSBC%d",i),Form(
"hAllTimeRMSBC%d",i),h3[i]->GetNbinsX(),h3[i]->GetXaxis()->GetXmin(),h3[i]->GetXaxis()->GetXmax());
1008 hAllTimeAvLGBC[i]=
new TH1F(Form(
"hAllTimeAvLGBC%d",i),Form(
"hAllTimeAvLGBC%d",i),h4[i]->GetNbinsX(),h4[i]->GetXaxis()->GetXmin(),h4[i]->GetXaxis()->GetXmax());
1009 hAllTimeRMSLGBC[i]=
new TH1F(Form(
"hAllTimeRMSLGBC%d",i),Form(
"hAllTimeRMSLGBC%d",i),h6[i]->GetNbinsX(),h6[i]->GetXaxis()->GetXmin(),h6[i]->GetXaxis()->GetXmax());
1015 for(Int_t i=0;i<4;i++){
1016 for(Int_t j=1;j<=h1[i]->GetNbinsX();j++){
1018 if(h2[i]->GetBinContent(j)!=0){
1019 hAllTimeAvBC[i]->SetBinContent(j-1,h1[i]->GetBinContent(j)/h2[i]->GetBinContent(j));
1020 hAllTimeRMSBC[i]->SetBinContent(j-1,TMath::Sqrt(h3[i]->GetBinContent(j)/h2[i]->GetBinContent(j)) );
1022 hAllTimeAvBC[i]->SetBinContent(j-1,0.);
1023 hAllTimeRMSBC[i]->SetBinContent(j-1,0.);
1026 if(h5[i]->GetBinContent(j)!=0){
1027 hAllTimeAvLGBC[i]->SetBinContent(j-1,h4[i]->GetBinContent(j)/h5[i]->GetBinContent(j));
1028 hAllTimeRMSLGBC[i]->SetBinContent(j-1,TMath::Sqrt(h6[i]->GetBinContent(j)/h5[i]->GetBinContent(j)) );
1030 hAllTimeAvLGBC[i]->SetBinContent(j-1,0.);
1031 hAllTimeRMSLGBC[i]->SetBinContent(j-1,0.);
1038 TFile *fileNew=
new TFile(outputFile.Data(),
"recreate");
1039 for(Int_t i=0;i<4;i++){
1040 hAllTimeAvBC[i]->Write();
1041 hAllTimeRMSBC[i]->Write();
1042 hAllTimeAvLGBC[i]->Write();
1043 hAllTimeRMSLGBC[i]->Write();
1051 for(Int_t i=0;i<4;i++){
1052 delete hAllTimeAvBC[i];
1053 delete hAllTimeRMSBC[i];
1054 delete hAllTimeAvLGBC[i];
1055 delete hAllTimeRMSLGBC[i];
1077 const Double_t lowerLimit[]={
1099 const Double_t upperLimit[]={
1121 TFile *
file =
new TFile(inputFile.Data());
1122 if(file==0x0)
return;
1125 for(Int_t i = 0; i <
kNBCmask; i++){
1126 ccBC[i]=(TH1F*) file->Get(Form(
"hAllTimeAvBC%d",i));
1129 TH1F *hRun=
new TH1F(Form(
"h%d",runNumber),Form(
"h%d",runNumber),19,0,19);
1131 Double_t minimumValue=10000;
1132 Int_t minimumIndex=-1;
1135 Double_t fitParameter=0;
1136 TF1 *f1=
new TF1(
"f1",
"pol0",0,17664);
1137 for(Int_t i=0;i<20;i++){
1140 fitResult=ccBC[j]->Fit(
"f1",
"CQ",
"",lowerLimit[i],upperLimit[i]);
1142 hRun->SetBinContent(i,0);
1145 fitParameter = f1->GetParameter(0);
1149 meanBC[j]=fitParameter;
1151 if(fitParameter<minimumValue){
1152 minimumValue = fitParameter;
1156 hRun->SetBinContent(i,minimumIndex);
1159 TFile *fileNew=
new TFile(outputFile.Data(),
"update");
Bool_t SetEMCalGeometry()
Set the EMCal Geometry.
TH1F * fhRawTimeEntriesLGBC[kNBCmask]
! 4 BCmask LG
Double_t fPassTimeMax
upper range of histo with time in passX
TH2F * fhEneVsAbsIdHG
! energy of each cell for high gain cells with strange time
TH1F * fhRawTimeSumLGBC[kNBCmask]
! 4 BCmask LG
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
virtual void UserCreateOutputObjects()
Bool_t AcceptCluster(AliVCluster *clus)
Selection criteria of good cluster are set here.
TH2F * fhRawTimeVsIdBC[kNBCmask]
! 4 BCmask HG
Int_t fFineNbins
number of bins of histo with T0 time
TH1F * fhRawTimeSumSqBC[kNBCmask]
! 4 BCmask HG
TString fGeometryName
geometry name
TH1F * fhTimeEnt[kNBCmask]
! 4
Double_t fMinLambda0
minimum cluster lambda0
TFile * fReferenceFile
file with reference for SM
TH1F * fhcalcEvtTime
! spectrum calcolot0[0]
Double_t fEnergyMin
lower range of histo with energy
TString fReferenceRunByRunFileName
! name of reference file (run-by-run)
TH2F * fhTimeVsBC
!cell time vs BC
Double_t fMinTime
minimum cluster time after correction
AliTOFT0maker * fTOFmaker
pointer to get T0 from TOF
Double_t fFineTmax
upper range of histo with T0 time
void SetDefaultCuts()
Set default cuts for calibration.
AliAnalysisTaskEMCALTimeCalib()
Double_t fRawTimeMin
lower range of histo with raw time
TH2F * fhTcellvsSM
! cell time vs SM
TH1F * fhRawTimeSumSqLGBC[kNBCmask]
! 4 BCmask LG
Double_t fMaxRtrack
maximum cluster track distance
Double_t fMaxLambda0
maximum cluster lambda0
AliEMCALGeometry * fgeom
pointer to EMCal geometry
Double_t fRawTimeMax
upper range of histo with raw time
TH2F * fhTcellvsTOFT0HD
! time of cell vs TOF T0 time for higher energy threshold
Bool_t IsLowGainCellInCluster(AliVCluster *clus)
Check if low gain cell is in a cluster.
Double_t fMaxTime
maximum cluster time after correction
static void ProduceOffsetForSMsV2(Int_t runNumber, TString inputFile="Reference.root", TString outputFile="ReferenceSM.root")
Double_t fEnergyMax
upper range of histo with energy
Double_t fMinClusterEnergy
minimum cluster energy
void LoadReferenceRunByRunHistos()
TH1F * fhTimeLGEnt[kNBCmask]
! 4
Double_t fFineTmin
lower range of histo with T0 time
TString fReferenceFileName
! name of reference file (for one period)
Int_t fMaxNcells
maximum number of cells in cluster
virtual void UserExec(Option_t *option)
Main loop executed for each event.
virtual void PrepareTOFT0maker()
Get T0 time from TOF.
TH1F * fhTimeSumSq[kNBCmask]
! 4
Bool_t fPileupFromSPD
flag to set PileupFromSPD
TH1F * fhTimeLGSumSq[kNBCmask]
! 4
TH1F * fhRawTimeSumBC[kNBCmask]
! 4 BCmask HG
Double_t fMinCellEnergy
minimum cell energy
Int_t fMinNcells
minimum number of cells in cluster
Task to work on Time Calibration for EMCal/DCal.
Double_t fMinLambda0LG
minimum cluster lambda0 Low Gain
Double_t fMaxClusterEnergy
maximum cluster energy
TH1F * fhEvtTimeHeader
! spectrum time from header
TH1F * fhEvtTimeDiff
! spectrum time difference
TH1F * fhAllAverageBC[kNBCmask]
TH2F * fhTcellvsTOFT0
! time of cell vs TOF T0 time
Double_t fPassTimeMin
lower range of histo with time in passX
Double_t fMaxLambda0LG
maximum cluster lambda0 Low Gain
static void ProduceCalibConsts(TString inputFile="time186319testWOL0.root", TString outputFile="Reference.root", Bool_t isFinal=kFALSE)
TH2F * fhEneVsAbsIdLG
! energy of each cell for low gain cells with strange time
Int_t fPassTimeNbins
number of bins of histo with time in passX
TList * fOutputList
pointer to output list
TH1F * fhRawTimeEntriesBC[kNBCmask]
! 4 BCmask HG
TH1C * fhRefRuns
4 BCmask Low gain
TH1F * fhEventType
! event type
Bool_t CheckCellRCU(Int_t nSupMod, Int_t icol, Int_t irow)
Check RCU for cell given by Super Module, column index, row index.
TH2F * fhRawTimeVsIdLGBC[kNBCmask]
! 4 BCmask LG
void LoadReferenceHistos()
Load reference Histograms (for one period) from file.
TH1F * fhTimeSum[kNBCmask]
! 4
virtual void Terminate(Option_t *)
TH1F * fhAllAverageLGBC[kNBCmask]
4 BCmask High gain
Int_t fEnergyNbins
number of bins of histo with energy
Int_t fRunNumber
! run number
Int_t fRawTimeNbins
number of bins of histo with raw time
TH2F * fhTimeDsup[kNSM]
20 entries per run: nSM
TH1F * fhTimeLGSum[kNBCmask]
! 4
TH2F * fhTimeDsupBC[kNSM][kNBCmask]
! 20 x 4