X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=ZDC%2FZDCCALIBMBda.cxx;h=8da0849061e686e85a51c77f9128aa964945d432;hb=71703d604aeaf767912016357690d21100ae5763;hp=d4ee67cf8e39a7501f401efd568e98e30ca02009;hpb=2804fead351626c1b5df4e15205a8f83087fba4e;p=u%2Fmrichter%2FAliRoot.git diff --git a/ZDC/ZDCCALIBMBda.cxx b/ZDC/ZDCCALIBMBda.cxx index d4ee67cf8e3..8da0849061e 100644 --- a/ZDC/ZDCCALIBMBda.cxx +++ b/ZDC/ZDCCALIBMBda.cxx @@ -23,6 +23,7 @@ Trigger Types Used: Standalone Trigger */ #define PEDDATA_FILE "ZDCPedestal.dat" #define MAPDATA_FILE "ZDCChMapping.dat" +#define ENCALIBDATA_FILE "ZDCEnergyCalib.dat" #define MBCALIBDATA_FILE "ZDCMBCalib.root" #include @@ -70,10 +71,37 @@ int main(int argc, char **argv) { TVirtualFitter::SetDefaultFitter("Minuit"); int status = 0; - // No. of ZDC cabled ch. + int const kNModules = 9; int const kNChannels = 24; int const kNScChannels = 32; - Int_t kFirstADCGeo=0, kLastADCGeo=3; + Int_t kFirstADCGeo=0, kLastADCGeo=1; + + Int_t iMod=-1; + Int_t modGeo[kNModules], modType[kNModules],modNCh[kNModules]; + for(Int_t kl=0; kleventType; - Int_t ich=0; - Int_t adcMod[2*kNChannels], adcCh[2*kNChannels], sigCode[2*kNChannels]; - Int_t det[2*kNChannels], sec[2*kNChannels]; - for(Int_t y=0; y<2*kNChannels; y++){ - adcMod[y]=adcCh[y]=sigCode[y]=det[y]=sec[y]=0; - } - - Int_t iScCh=0; - Int_t scMod[kNScChannels], scCh[kNScChannels], scSigCode[kNScChannels]; - Int_t scDet[kNScChannels], scSec[kNScChannels]; - for(Int_t y=0; ySetSODReading(kTRUE); // -------------------------------------------------------- @@ -226,42 +248,62 @@ int main(int argc, char **argv) { else{ while((rawStreamZDC->Next())){ if(rawStreamZDC->IsHeaderMapping()){ // mapping header - modNum = rawStreamZDC->GetADCModule(); - modType = rawStreamZDC->GetModType(); + iMod++; + modGeo[iMod] = rawStreamZDC->GetADCModule(); + modType[iMod] = rawStreamZDC->GetModType(); + modNCh[iMod] = rawStreamZDC->GetADCNChannels(); } if(rawStreamZDC->IsChMapping()){ - if(modType==1){ // ADC mapping ---------------------- + if(modType[iMod]==1){ // ADC mapping ---------------------- adcMod[ich] = rawStreamZDC->GetADCModFromMap(ich); adcCh[ich] = rawStreamZDC->GetADCChFromMap(ich); sigCode[ich] = rawStreamZDC->GetADCSignFromMap(ich); det[ich] = rawStreamZDC->GetDetectorFromMap(ich); sec[ich] = rawStreamZDC->GetTowerFromMap(ich); - // - fprintf(mapFile4Shuttle,"\t%d\t%d\t%d\t%d\t%d\t%d\n", - ich,adcMod[ich],adcCh[ich],sigCode[ich],det[ich],sec[ich]); - // - //printf(" Mapping in DA -> %d ADC: mod %d ch %d, code %d det %d, sec %d\n", - // ich,adcMod[ich],adcCh[ich],sigCode[ich],det[ich],sec[ich]); - // ich++; } - else if(modType==2){ //VME scaler mapping -------------------- + else if(modType[iMod]==2){ //VME scaler mapping -------------------- scMod[iScCh] = rawStreamZDC->GetScalerModFromMap(iScCh); scCh[iScCh] = rawStreamZDC->GetScalerChFromMap(iScCh); scSigCode[iScCh] = rawStreamZDC->GetScalerSignFromMap(iScCh); scDet[iScCh] = rawStreamZDC->GetScDetectorFromMap(iScCh); - scSec[iScCh] = rawStreamZDC->GetScTowerFromMap(iScCh); - // - fprintf(mapFile4Shuttle,"\t%d\t%d\t%d\t%d\t%d\t%d\n", - iScCh,scMod[iScCh],scCh[iScCh],scSigCode[iScCh],scDet[iScCh],scSec[iScCh]); - // - //printf(" Mapping in DA -> %d Scaler: mod %d ch %d, code %d det %d, sec %d\n", - // iScCh,scMod[iScCh],scCh[iScCh],scSigCode[iScCh],scDet[iScCh],scSec[iScCh]); - // + scSec[iScCh] = rawStreamZDC->GetScTowerFromMap(iScCh); iScCh++; } + else if(modType[iMod]==6 && modGeo[iMod]==4){ // ZDC TDC mapping -------------------- + tdcMod[itdcCh] = rawStreamZDC->GetTDCModFromMap(itdcCh); + tdcCh[itdcCh] = rawStreamZDC->GetTDCChFromMap(itdcCh); + tdcSigCode[itdcCh] = rawStreamZDC->GetTDCSignFromMap(itdcCh); + itdcCh++; + } } + } + // Writing data on output FXS file + for(Int_t is=0; is<2*kNChannels; is++){ + fprintf(mapFile4Shuttle,"\t%d\t%d\t%d\t%d\t%d\t%d\n", + is,adcMod[is],adcCh[is],sigCode[is],det[is],sec[is]); + //printf(" CalibMB DA -> %d ADC: mod %d ch %d, code %d det %d, sec %d\n", + // is,adcMod[is],adcCh[is],sigCode[is],det[is],sec[is]); + } + for(Int_t is=0; is %d Scaler: mod %d ch %d, code %d det %d, sec %d\n", + // is,scMod[is],scCh[is],scSigCode[is],scDet[is],scSec[is]); } + for(Int_t is=0; is %d TDC: mod %d ch %d, code %d\n", + // is,tdcMod[is],tdcCh[is],tdcSigCode[is]); + } + for(Int_t is=0; is Module mapping: geo %d type %d #ch %d\n", + // modGeo[is],modType[is],modNCh[is]); + } + } fclose(mapFile4Shuttle); }// SOD event @@ -273,12 +315,12 @@ int main(int argc, char **argv) { if(header){ UChar_t message = header->GetAttributes(); if((message & 0xf0) == 0x60){ // DEDICATED CALIBRATION MB RUN - //printf("\t STANDALONE_CALIBRAION_MB_RUN raw data found\n"); + //printf("\t CALIBRATION_MB_RUN raw data found\n"); continue; } else{ - printf("\t NO STANDALONE_MB_RUN raw data found\n"); - return -1; + //printf("\t NO CALIBRAION_MB_RUN raw data found\n"); + //return -1; } } else{ @@ -299,9 +341,10 @@ int main(int argc, char **argv) { rawStreamZDC->SetMapTow(jk, sec[jk]); } // - Float_t rawZDC=0., rawZEM=0.; - Float_t corrZDC=0., corrZEM=0.; - Float_t corrZDCTot=0., corrZDCC=0., corrZDCA=0., corrZEMTot=0.; + Float_t rawZNC=0., rawZPC=0., rawZNA=0., rawZPA=0., rawZEM1=0., rawZEM2=0.; + Float_t corrZNC=0., corrZPC=0., corrZNA=0., corrZPA=0., corrZEM1=0.,corrZEM2=0.; + Float_t calZNC=0., calZPC=0., calZNA=0., calZPA=0., calZEM1=0., calZEM2=0.; + Float_t calZDCTot=0., calZDCC=0., calZDCA=0., calZEM=0.; // while(rawStreamZDC->Next()){ Int_t detector = rawStreamZDC->GetSector(0); @@ -335,26 +378,51 @@ int main(int argc, char **argv) { // if(index!=-1 && quad!=5){ // - if(detector==3){ - rawZEM = (Float_t) rawStreamZDC->GetADCValue(); - corrZEM = (rawStreamZDC->GetADCValue()) - Pedestal; - corrZEMTot += corrZEM; + if(detector==1){ + rawZNC = (Float_t) rawStreamZDC->GetADCValue(); + corrZNC = rawZNC - Pedestal; + } + else if(detector==2){ + rawZPC = (Float_t) rawStreamZDC->GetADCValue(); + corrZPC = rawZPC - Pedestal; } - else{ - rawZDC = (Float_t) rawStreamZDC->GetADCValue(); - corrZDC = rawZDC - Pedestal; - if(detector==1 || detector==2) corrZDCC += corrZDC; - else corrZDCA += corrZDC; - corrZDCTot += corrZDC; + else if(detector==3){ + if(quad==1){ + rawZEM1 = (Float_t) rawStreamZDC->GetADCValue(); + corrZEM1 = (rawStreamZDC->GetADCValue()) - Pedestal; + } + else{ + rawZEM2 = (Float_t) rawStreamZDC->GetADCValue(); + corrZEM2 = (rawStreamZDC->GetADCValue()) - Pedestal; + } + } + else if(detector==4){ + rawZNA = (Float_t) rawStreamZDC->GetADCValue(); + corrZNA = rawZNA - Pedestal; + } + else if(detector==5){ + rawZPA = (Float_t) rawStreamZDC->GetADCValue(); + corrZPA = rawZPA - Pedestal; } } }//IsADCDataWord() } // Next() - - hZDCvsZEM ->Fill(corrZDCTot, corrZEMTot); - hZDCCvsZEM->Fill(corrZDCC, corrZEMTot); - hZDCAvsZEM->Fill(corrZDCA, corrZEMTot); + + calZNC = calibCoeff[0]*corrZNC; + calZPC = calibCoeff[1]*corrZPC; + calZNA = calibCoeff[2]*corrZNA; + calZPA = calibCoeff[3]*corrZPA; + calZEM1 = calibCoeff[4]*corrZEM1; + calZEM2 = calibCoeff[4]*corrZEM2; + calZDCTot = calZNC+calZPC+calZPA+calZNA; + calZDCC = calZNC+calZPC; + calZDCA = calZNA+calZPA; + calZEM = calZEM1+calZEM2; + // + hZDCvsZEM ->Fill(calZDCTot/1000, calZEM/1000); + hZDCCvsZEM->Fill(calZDCC/1000, calZEM/1000); + hZDCAvsZEM->Fill(calZDCA/1000, calZEM/1000); nevents_physics++; }//(if PHYSICS_EVENT)