X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EMCAL%2FAliEMCALQADataMakerRec.cxx;h=712d098bb642dd00c1a51bdefeda4b9482963875;hb=122cbc27bc2bdaddb9cded119c5f73189573b162;hp=e75f61277ec6824561f89854aee97e6c34cc6cea;hpb=180c431b5ae15aad6d641807817c12f600d21621;p=u%2Fmrichter%2FAliRoot.git diff --git a/EMCAL/AliEMCALQADataMakerRec.cxx b/EMCAL/AliEMCALQADataMakerRec.cxx index e75f61277ec..712d098bb64 100644 --- a/EMCAL/AliEMCALQADataMakerRec.cxx +++ b/EMCAL/AliEMCALQADataMakerRec.cxx @@ -85,8 +85,8 @@ AliEMCALQADataMakerRec::AliEMCALQADataMakerRec(fitAlgorithm fitAlgo) : fFittingAlgorithm(0), fRawAnalyzer(0), fRawAnalyzerTRU(0), - fGeom(0), - fSuperModules(10), // FIXME!!! number of SuperModules; 10 for 2011; update default for later runs + fGeom(0), + fSuperModules(20), // number of SuperModules; updated to 20 for EMCal + DCal fFirstPedestalSample(0), fLastPedestalSample(3), fFirstPedestalSampleTRU(0), @@ -120,7 +120,7 @@ AliEMCALQADataMakerRec::AliEMCALQADataMakerRec(fitAlgorithm fitAlgo) : fRawAnalyzerTRU->SetFixTau(kTRUE); fRawAnalyzerTRU->SetTau(2.5); // default for TRU shaper - fGeom = new AliEMCALGeometry("EMCAL_COMPLETEV1", "EMCAL"); + fGeom = new AliEMCALGeometry("EMCAL_COMPLETE12SMV1_DCAL_8SM", "EMCAL"); // for (Int_t sm = 0 ; sm < fSuperModules ; sm++){ // fTextSM[sm] = NULL ; // } @@ -397,12 +397,12 @@ void AliEMCALQADataMakerRec::InitRaws() TH2I * hT3 = new TH2I("hTRUEmcalL0hits", "L0 trigger hits: Total number of 2x2 L0 generated", nTRUCols, -0.5, nTRUCols - 0.5, nTRURows, -0.5, nTRURows-0.5); hT3->SetOption("COLZ"); //hT3->Sumw2(); - Add2RawsList(hT3, kNL0TRU, !expert, image, !saveCorr); + Add2RawsList(hT3, kNL0TRU, expert, image, !saveCorr); // L0 trigger hits: average time (bins are TRU channels) TProfile2D * hT4 = new TProfile2D("hTRUEmcalL0hitsAvgTime", "L0 trigger hits: average time bin", nTRUCols, -0.5, nTRUCols - 0.5, nTRURows, -0.5, nTRURows-0.5, profileOption); hT4->SetOption("COLZ"); - Add2RawsList(hT4, kTimeL0TRU, !expert, image, !saveCorr); + Add2RawsList(hT4, kTimeL0TRU, expert, image, !saveCorr); // L0 trigger hits: first in the event (bins are TRU channels) TH1I * hT5 = new TH1I("hTRUEmcalL0hitsFirst", "L0 trigger hits: First hit in the event", nTot2x2, -0.5, nTot2x2); @@ -474,11 +474,11 @@ void AliEMCALQADataMakerRec::InitRaws() h15->GetZaxis()->SetNdivisions(3); h15->UseCurrentStyle(); h15->SetDirectory(0); - Add2RawsList(h15, k2DRatioAmp, !expert, image, !saveCorr) ; + Add2RawsList(h15, k2DRatioAmp, expert, image, !saveCorr) ; TH1F * h16 = new TH1F("hRatioDist", "Amplitude_{current run}/Amplitude_{reference run} ratio distribution", nTot, 0., 2.); - h16->SetMinimum(0.1); - h16->SetMaximum(100.); + // h16->SetMinimum(0.1); + // h16->SetMaximum(100.); gStyle->SetOptStat(0); h16->UseCurrentStyle(); h16->SetDirectory(0); @@ -495,14 +495,14 @@ void AliEMCALQADataMakerRec::InitRaws() hL10->UseCurrentStyle(); hL10->SetDirectory(0); // hL10->SetOption("E"); - Add2RawsList(hL10, kLEDMonRatio, !expert, image, !saveCorr) ; + Add2RawsList(hL10, kLEDMonRatio, expert, image, !saveCorr) ; TH1F * hL11 = new TH1F("hMaxMinusMinLEDMonRatioDist", "LEDMon amplitude, Ratio distribution", nTotLEDMon, 0, 2); - hL11->SetMinimum(0.1) ; + // hL11->SetMinimum(0.1) ; gStyle->SetOptStat(0); hL11->UseCurrentStyle(); hL11->SetDirectory(0); - Add2RawsList(hL11, kLEDMonRatioDist, !expert, image, !saveCorr) ; + Add2RawsList(hL11, kLEDMonRatioDist, expert, image, !saveCorr) ; GetCalibRefFromOCDB(); @@ -518,20 +518,20 @@ void AliEMCALQADataMakerRec::InitRaws() TProfile2D *hS0 = new TProfile2D("hL1Amp", "Mean STU signal per Row and Column", nSTUCols, -0.5, nSTUCols-0.5, nSTURows, -0.5, nSTURows-0.5); Add2RawsList(hS0, kAmpL1, expert, !image, !saveCorr) ; - TH2F *hS1 = new TH2F("hL1Gamma", "L1 Gamma patch position (FastOR top-left)", nSTUCols, -0.50, nSTUCols-0.5, nSTURows, -0.5, nSTURows-0.5); - Add2RawsList(hS1, kGL1, expert, image, !saveCorr) ; + TH2F *hS1 = new TH2F("hL1Gamma", "L1 Gamma patch position (FastOR top-left)", nSTUCols, -0.50, nSTUCols-0.5, nSTURows + 5, -0.5, nSTURows-0.5 + 5); //+5 for better visible error box + Add2RawsList(hS1, kGL1, !expert, image, !saveCorr) ; TH2F *hS2 = new TH2F("hL1Jet", "L1 Jet patch position (FastOR top-left)", 12, -0.5, nSTUCols-0.5, 16, 0, nSTURows-0.5); - Add2RawsList(hS2, kJL1, expert, image, !saveCorr) ; + Add2RawsList(hS2, kJL1, !expert, image, !saveCorr) ; TH2I *hS3 = new TH2I("hL1GV0", "L1 Gamma patch amplitude versus V0 signal", 500, 0, 50000, 1500, 0, 1500); - Add2RawsList(hS3, kGL1V0, expert, !image, !saveCorr) ; + Add2RawsList(hS3, kGL1V0, expert, image, !saveCorr) ; TH2I *hS4 = new TH2I("hL1JV0", "L1 Jet patch amplitude versus V0 signal", 500, 0, 50000, 1000, 0, 1000); Add2RawsList(hS4, kJL1V0, expert, !image, !saveCorr) ; TH1I *hS5 = new TH1I("hFrameR","Link between TRU and STU", 32, 0, 32); - Add2RawsList(hS5, kSTUTRU, expert, !image, !saveCorr) ; + Add2RawsList(hS5, kSTUTRU, !expert, image, !saveCorr) ; hS0->SetOption("COLZ"); hS1->SetOption("COLZ"); @@ -1080,8 +1080,8 @@ void AliEMCALQADataMakerRec::ConvertProfile2H(TProfile * p, TH2 * histo) } } //____________________________________________________________________________ -void AliEMCALQADataMakerRec::GetTruChannelPosition( Int_t &globRow, Int_t &globColumn, Int_t module, Int_t ddl, Int_t branch, Int_t column ) -{ +void AliEMCALQADataMakerRec::GetTruChannelPosition( Int_t &globRow, Int_t &globColumn, Int_t module, Int_t ddl, Int_t branch, Int_t column ) const +{ // from local to global indices Int_t mrow; Int_t mcol; Int_t trow; @@ -1120,150 +1120,137 @@ void AliEMCALQADataMakerRec::GetTruChannelPosition( Int_t &globRow, Int_t &globC // output global row/collumn position (0,0 = SMA0, phi = 0, |eta| = max) globRow = mrow + drow + trow; globColumn = mcol + tcol; - return; + return; } //____________________________________________________________________________ -void AliEMCALQADataMakerRec::MakeRawsSTU(AliRawReader* rawReader){ - - AliEMCALTriggerSTURawStream* inSTU = new AliEMCALTriggerSTURawStream(rawReader); +void AliEMCALQADataMakerRec::MakeRawsSTU(AliRawReader* rawReader) +{ // STU specifics + AliEMCALTriggerSTURawStream* inSTU = new AliEMCALTriggerSTURawStream(rawReader); - rawReader->Reset(); - rawReader->Select("EMCAL", 44); - - - //L1 segmentation - Int_t sizeL1gsubr = 1; - Int_t sizeL1gpatch = 2; - Int_t sizeL1jsubr = 4; - - Int_t EMCALtrig[AliEMCALGeoParams::fgkEMCALSTUCols][AliEMCALGeoParams::fgkEMCALSTURows]; + rawReader->Reset(); + rawReader->Select("EMCAL", 44); - memset(EMCALtrig, 0, sizeof(int) * AliEMCALGeoParams::fgkEMCALSTUCols * AliEMCALGeoParams::fgkEMCALSTURows); - + //L1 segmentation + Int_t sizeL1gsubr = 1; + Int_t sizeL1gpatch = 2; + Int_t sizeL1jsubr = 4; - + Int_t iEMCALtrig[AliEMCALGeoParams::fgkEMCALSTUCols][AliEMCALGeoParams::fgkEMCALSTURows]; + memset(iEMCALtrig, 0, sizeof(int) * AliEMCALGeoParams::fgkEMCALSTUCols * AliEMCALGeoParams::fgkEMCALSTURows); - if (inSTU->ReadPayLoad()) - { - - //Fw version (use in case of change in L1 jet - Int_t fw = inSTU->GetFwVersion(); - Int_t sizeL1jpatch = 2+(fw >> 16); - - //To check link - - Int_t mask = inSTU->GetFrameReceived(); - + if (inSTU->ReadPayLoad()) + { + //Fw version (use in case of change in L1 jet + Int_t fw = inSTU->GetFwVersion(); + Int_t sizeL1jpatch = 2+(fw >> 16); - for (int i = 0; i < 32; i++) - { - if ((mask >> i) & 0x1) FillRawsData(kSTUTRU, i); - } + //To check link + Int_t mask = inSTU->GetFrameReceived() ^ inSTU->GetRegionEnable(); + for (int i = 0; i < 32; i++) + { + if (!((mask >> i) & 0x1)) FillRawsData(kSTUTRU, i); + } - //V0 signal in STU - Int_t V0Sig = inSTU->GetV0A()+inSTU->GetV0C(); - - //FastOR amplitude receive from TRU - for (Int_t i = 0; i < 32; i++) - { - UInt_t adc[96]; - for (Int_t j = 0; j < 96; j++) adc[j] = 0; - - inSTU->GetADC(i, adc); - - Int_t iTRU = fGeom->GetTRUIndexFromSTUIndex(i); + //V0 signal in STU + Int_t iV0Sig = inSTU->GetV0A()+inSTU->GetV0C(); + + //FastOR amplitude receive from TRU + for (Int_t i = 0; i < 32; i++) + { + UInt_t adc[96]; + for (Int_t j = 0; j < 96; j++) adc[j] = 0; + + inSTU->GetADC(i, adc); + + Int_t iTRU = fGeom->GetTRUIndexFromSTUIndex(i); - for (Int_t j = 0; j < 96; j++) - { - Int_t idx; - fGeom->GetAbsFastORIndexFromTRU(iTRU, j, idx); + for (Int_t j = 0; j < 96; j++) + { + Int_t idx; + fGeom->GetAbsFastORIndexFromTRU(iTRU, j, idx); - Int_t px, py; - fGeom->GetPositionInEMCALFromAbsFastORIndex(idx, px, py); + Int_t px, py; + fGeom->GetPositionInEMCALFromAbsFastORIndex(idx, px, py); - EMCALtrig[px][py] = adc[j]; - } + iEMCALtrig[px][py] = adc[j]; } + } - //L1 Gamma patches - Int_t iTRU_STU, x, y; - for (Int_t i = 0; i < inSTU->GetNL1GammaPatch(); i++) + //L1 Gamma patches + Int_t iTRUSTU, x, y; + for (Int_t i = 0; i < inSTU->GetNL1GammaPatch(0); i++) + { + if (inSTU->GetL1GammaPatch(i, 0, iTRUSTU, x, y)) // col (0..23), row (0..3) { - if (inSTU->GetL1GammaPatch(i, iTRU_STU, x, y)) // col (0..23), row (0..3) - { - Int_t iTRU; - iTRU = fGeom->GetTRUIndexFromSTUIndex(iTRU_STU); + Int_t iTRU; + iTRU = fGeom->GetTRUIndexFromSTUIndex(iTRUSTU); + + Int_t etaG = 23-x, phiG = y + 4 * int(iTRU/2); //position in EMCal + if (iTRU%2) etaG += 24; //C-side - Int_t etaG = 23-x, phiG = y + 4 * int(iTRU/2); //position in EMCal - - if (iTRU%2) etaG += 24; //C-side - - etaG = etaG - sizeL1gsubr * sizeL1gpatch + 1; + etaG = etaG - sizeL1gsubr * sizeL1gpatch + 1; - //Position of patch L1G (bottom-left FastOR of the patch) - FillRawsData(kGL1, etaG, phiG); + //Position of patch L1G (bottom-left FastOR of the patch) + FillRawsData(kGL1, etaG, phiG); - //loop to sum amplitude of FOR in the gamma patch - Int_t L1G_PatchAmp = 0; - for (Int_t L1Gx = 0; L1Gx < sizeL1gpatch; L1Gx ++) + //loop to sum amplitude of FOR in the gamma patch + Int_t iL1GPatchAmp = 0; + for (Int_t L1Gx = 0; L1Gx < sizeL1gpatch; L1Gx ++) + { + for (Int_t L1Gy = 0; L1Gy < sizeL1gpatch; L1Gy ++) { - for (Int_t L1Gy = 0; L1Gy < sizeL1gpatch; L1Gy ++) - { - if (etaG+L1Gx < 48 && phiG+L1Gy < 64) L1G_PatchAmp += EMCALtrig[etaG+L1Gx][phiG+L1Gy]; - //cout << EMCALtrig[etaG+L1Gx][phiG+L1Gy] << endl; - } + if (etaG+L1Gx < 48 && phiG+L1Gy < 64) iL1GPatchAmp += iEMCALtrig[etaG+L1Gx][phiG+L1Gy]; + //cout << iEMCALtrig[etaG+L1Gx][phiG+L1Gy] << endl; } - - //if (L1G_PatchAmp > 500) cout << "L1G amp =" << L1G_PatchAmp << endl; - FillRawsData(kGL1V0, V0Sig, L1G_PatchAmp); - } + + //if (iL1GPatchAmp > 500) cout << "L1G amp =" << iL1GPatchAmp << endl; + FillRawsData(kGL1V0, iV0Sig, iL1GPatchAmp); + } + } - - //L1 Jet patches - for (Int_t i = 0; i < inSTU->GetNL1JetPatch(); i++) + //L1 Jet patches + for (Int_t i = 0; i < inSTU->GetNL1JetPatch(0); i++) + { + if (inSTU->GetL1JetPatch(i, 0, x, y)) // col (0,15), row (0,11) { - if (inSTU->GetL1JetPatch(i, x, y)) // col (0,15), row (0,11) - { - - Int_t etaJ = sizeL1jsubr * (11-y-sizeL1jpatch + 1); - Int_t phiJ = sizeL1jsubr * (15-x-sizeL1jpatch + 1); + + Int_t etaJ = sizeL1jsubr * (11-y-sizeL1jpatch + 1); + Int_t phiJ = sizeL1jsubr * (15-x-sizeL1jpatch + 1); + + //position of patch L1J (FOR bottom-left) + FillRawsData(kJL1, etaJ, phiJ); - //position of patch L1J (FOR bottom-left) - FillRawsData(kJL1, etaJ, phiJ); - - //loop the sum aplitude of FOR in the jet patch - Int_t L1J_PatchAmp = 0; - for (Int_t L1Jx = 0; L1Jx < sizeL1jpatch*4; L1Jx ++) + //loop the sum aplitude of FOR in the jet patch + Int_t iL1JPatchAmp = 0; + for (Int_t L1Jx = 0; L1Jx < sizeL1jpatch*4; L1Jx ++) + { + for (Int_t L1Jy = 0; L1Jy < sizeL1jpatch*4; L1Jy ++) { - for (Int_t L1Jy = 0; L1Jy < sizeL1jpatch*4; L1Jy ++) - { - if (etaJ+L1Jx < 48 && phiJ+L1Jy < 64) L1J_PatchAmp += EMCALtrig[etaJ+L1Jx][phiJ+L1Jy]; - } + if (etaJ+L1Jx < 48 && phiJ+L1Jy < 64) iL1JPatchAmp += iEMCALtrig[etaJ+L1Jx][phiJ+L1Jy]; } - - //cout << "L1J amp =" << L1J_PatchAmp << endl; - FillRawsData(kJL1V0, V0Sig, L1J_PatchAmp); - } + + //cout << "L1J amp =" << iL1JPatchAmp << endl; + FillRawsData(kJL1V0, iV0Sig, iL1JPatchAmp); } - } + } - //Fill FOR amplitude histo - for (Int_t i = 0; i < 48; i++) + //Fill FOR amplitude histo + for (Int_t i = 0; i < 48; i++) + { + for (Int_t j = 0; j < 60; j++) { - for (Int_t j = 0; j < 60; j++) - { - if (EMCALtrig[i][j] != 0) FillRawsData(kAmpL1, i, j, EMCALtrig[i][j]); - } + if (iEMCALtrig[i][j] != 0) FillRawsData(kAmpL1, i, j, iEMCALtrig[i][j]); } - - delete inSTU; - return; + } + + delete inSTU; + return; }