From: prino Date: Tue, 6 Oct 2009 09:53:17 +0000 (+0000) Subject: New features in SDD drift speed objects: a) use different average values for layer... X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=50d25e98cc5b5035b30211cda43cf58b28f63816;p=u%2Fmrichter%2FAliRoot.git New features in SDD drift speed objects: a) use different average values for layer 3 and layer 4 for modules with bad injectors, b) store a UInt_t with an injector quality value for each module (F. Prino) --- diff --git a/ITS/AliITSDriftSpeedArraySDD.cxx b/ITS/AliITSDriftSpeedArraySDD.cxx index aad7ef67435..9ea9ef08d2f 100644 --- a/ITS/AliITSDriftSpeedArraySDD.cxx +++ b/ITS/AliITSDriftSpeedArraySDD.cxx @@ -31,14 +31,16 @@ ClassImp(AliITSDriftSpeedArraySDD) AliITSDriftSpeedArraySDD::AliITSDriftSpeedArraySDD(): TObject(), fNEvents(0), -fDriftSpeedSDD(10){ +fDriftSpeedSDD(10), +fInjectorStatus(0x3E000000){ // default constructor } //______________________________________________________________________ AliITSDriftSpeedArraySDD::AliITSDriftSpeedArraySDD(Int_t numEv): TObject(), fNEvents(0), -fDriftSpeedSDD(numEv){ +fDriftSpeedSDD(numEv), +fInjectorStatus(0x3E000000){ // standard constructor } //______________________________________________________________________ @@ -52,6 +54,7 @@ void AliITSDriftSpeedArraySDD::PrintAll() const{ // print drift speed parameters for all elements in the array printf("Array Size=%d\n",fDriftSpeedSDD.GetSize()); printf("Array Elements =%d\n",fNEvents); + printf("Injector Status =%d\n",fInjectorStatus); for(Int_t i=0;iAddDriftSpeed(dsp); - vdrift.AddAt(arr,2*modID+isid); continue; } retfscf=fscanf(injFil,"%d",&polDeg); while (!feof(injFil)){ retfscf=fscanf(injFil,"%d %u ",&evNumb,&timeStamp); - if(feof(injFil)) break; - for(Int_t ic=0;ic<4;ic++){ - retfscf=fscanf(injFil,"%f ",&auxP); - param[ic]=auxP; - } + if(evNumb==-99){ + statusInj=timeStamp; + arr->SetInjectorStatus(statusInj); + }else{ + if(feof(injFil)) break; + for(Int_t ic=0;ic<4;ic++){ + retfscf=fscanf(injFil,"%f ",&auxP); + param[ic]=auxP; + } - if(param[0]>minValP0 && param[0]minValP1){ - for(Int_t ic=0;ic<4;ic++) aveCoef[ic]+=param[ic]; - nPt++; - AliITSDriftSpeedSDD *dsp=new AliITSDriftSpeedSDD(evNumb,timeStamp,polDeg,param); - arr->AddDriftSpeed(dsp); - modSet[2*modID+isid]=1; + if(param[0]>minValP0 && param[0]minValP1){ + if(modIDAddDriftSpeed(dsp); + modSet[2*modID+isid]=1; + } } } fclose(injFil); @@ -297,20 +306,33 @@ UInt_t AliITSPreprocessorSDD::ProcessInjector(AliITSDDLModuleMapSDD* ddlmap){ // set drift speed for modules with bad injectors for(Int_t ic=0;ic<4;ic++){ - if(nPt>0) aveCoef[ic]/=nPt; // mean parameters - else aveCoef[ic]=defCoef[ic]; // default parameters + if(nPtLay3>0) aveCoefLay3[ic]/=nPtLay3; // mean parameters + else aveCoefLay3[ic]=defCoef[ic]; // default parameters + if(nPtLay4>0) aveCoefLay4[ic]/=nPtLay4; // mean parameters + else aveCoefLay4[ic]=defCoef[ic]; // default parameters } - AliITSDriftSpeedSDD *avdsp=new AliITSDriftSpeedSDD(evNumb,timeStamp,polDeg,aveCoef); + AliITSDriftSpeedSDD *avdsp3=new AliITSDriftSpeedSDD(evNumb,timeStamp,polDeg,aveCoefLay3); + AliITSDriftSpeedSDD *avdsp4=new AliITSDriftSpeedSDD(evNumb,timeStamp,polDeg,aveCoefLay4); - for(Int_t ihyb=0; ihyb<2*kNumberOfSDD; ihyb++){ + for(Int_t ihyb=0; ihyb<2*kNumberOfSDDLay3; ihyb++){ if(modSet[ihyb]==0){ - AliWarning(Form("No good injector events for mod. %d --> use average values",ihyb/2)); + AliWarning(Form("No good injector events for mod. %d side %d --> use average values for layer 3",ihyb/2,ihyb%2)); AliITSDriftSpeedArraySDD *arr=new AliITSDriftSpeedArraySDD(); - arr->AddDriftSpeed(avdsp); + arr->AddDriftSpeed(avdsp3); + arr->SetInjectorStatus(0); vdrift.AddAt(arr,ihyb); } } + for(Int_t ihyb=2*kNumberOfSDDLay3; ihyb<2*kNumberOfSDD; ihyb++){ + if(modSet[ihyb]==0){ + AliWarning(Form("No good injector events for mod. %d side %d --> use average values for layer 4",ihyb/2,ihyb%2)); + AliITSDriftSpeedArraySDD *arr=new AliITSDriftSpeedArraySDD(); + arr->AddDriftSpeed(avdsp4); + arr->SetInjectorStatus(0); + vdrift.AddAt(arr,ihyb); + } + } AliCDBMetaData *md= new AliCDBMetaData(); md->SetResponsible("Francesco Prino"); diff --git a/ITS/AliITSPreprocessorSDD.h b/ITS/AliITSPreprocessorSDD.h index b87184dc4b2..b2ffe676364 100644 --- a/ITS/AliITSPreprocessorSDD.h +++ b/ITS/AliITSPreprocessorSDD.h @@ -27,6 +27,7 @@ class AliITSPreprocessorSDD : public AliPreprocessor { virtual ~AliITSPreprocessorSDD(){;} enum {kNumberOfSDD = 260}; // number of SDD modules + enum {kNumberOfSDDLay3 = 84}; // number of SDD modules on layer 3 enum {kNumberOfDDL = 24}; // number of DDLs in SDD enum {kModulesPerDDL = 12}; // number of modules in each DDL enum {kNumberOfChannels = 512}; // number of channels per module diff --git a/ITS/AnalyzeSDDInjectorsAllMod.C b/ITS/AnalyzeSDDInjectorsAllMod.C index 4e9db0536fb..f94e99eba1e 100644 --- a/ITS/AnalyzeSDDInjectorsAllMod.C +++ b/ITS/AnalyzeSDDInjectorsAllMod.C @@ -213,6 +213,7 @@ void AnalyzeSDDInjectorsAllMod(Char_t *datafil, Int_t index=kSides*(kModPerDDL*iddl+imod)+isid; anal[index]->FitMeanDriftSpeedVsAnode(); anal[index]->WriteToASCII(0,timeSt,0); + anal[index]->WriteInjectorStatusToASCII(); anal[index]->WriteToROOT(outfil1); } } diff --git a/ITS/ShowDriftSpeedSDD.C b/ITS/ShowDriftSpeedSDD.C index 995fe9ab31c..e1ee6a6ca8c 100644 --- a/ITS/ShowDriftSpeedSDD.C +++ b/ITS/ShowDriftSpeedSDD.C @@ -64,7 +64,7 @@ void ShowDriftSpeedSDD(Char_t filnam[150]="$ALICE_ROOT/ITS/Calib/DriftSpeedSDD/R gvdr0[i]->SetPoint(iAn,(Float_t)iAn,vel0); gvdr1[i]->SetPoint(iAn,(Float_t)iAn,vel1); } - printf(" Mod. %d \t v(an 128l)= %f",iMod,vdriftarr0->GetDriftSpeed(0,128)); + printf(" Mod. %d \tStatusLR=%X %X \t v(an 128l)= %f",iMod,vdriftarr0->GetInjectorStatus(),vdriftarr1->GetInjectorStatus(),vdriftarr0->GetDriftSpeed(0,128)); printf(" \t v(an 128r)= %f\n",vdriftarr1->GetDriftSpeed(0,128)); c0->cd(1); gvdr0[i]->Draw("AP");