X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=HMPID%2FAliHMPIDReconstructor.cxx;h=bfc4b12d8aa7b5523229b143ca78613b7e21ff5a;hb=54104a7c7ea1a2e135b90845687cafd5a831b90d;hp=4264ec91fc70bba563711a9afbbc646761f1bad5;hpb=dac53a45e1151e854da3ac3483d1205764f46b9c;p=u%2Fmrichter%2FAliRoot.git diff --git a/HMPID/AliHMPIDReconstructor.cxx b/HMPID/AliHMPIDReconstructor.cxx index 4264ec91fc7..bfc4b12d8aa 100644 --- a/HMPID/AliHMPIDReconstructor.cxx +++ b/HMPID/AliHMPIDReconstructor.cxx @@ -43,8 +43,8 @@ AliHMPIDReconstructor::AliHMPIDReconstructor():AliReconstructor(),fUserCut(0),fD fDig=new TObjArray(AliHMPIDParam::kMaxCh+1); fDig->SetOwner(kTRUE); for(int i=AliHMPIDParam::kMinCh;i<=AliHMPIDParam::kMaxCh;i++){ - fDig->AddAt(new TClonesArray("AliHMPIDDigit"),i); - TClonesArray *pClus = new TClonesArray("AliHMPIDCluster"); + fDig->AddAt(new TClonesArray("AliHMPIDDigit",24000),i); + TClonesArray *pClus = new TClonesArray("AliHMPIDCluster",24000); pClus->SetUniqueID(i); fClu->AddAt(pClus,i); } @@ -53,7 +53,7 @@ AliHMPIDReconstructor::AliHMPIDReconstructor():AliReconstructor(),fUserCut(0),fD { for(Int_t iCh=AliHMPIDParam::kMinCh;iCh<=AliHMPIDParam::kMaxCh;iCh++) { fUserCut[iCh] = fgkRecoParam->GetUserCut(iCh); - Printf("HMPID: UserCut successfully loaded (from RecoParam) for chamber %i -> %i ",iCh,fUserCut[iCh]); + AliDebug(1,Form("UserCut successfully loaded (from RecoParam) for chamber %i -> %i ",iCh,fUserCut[iCh])); } } else { @@ -62,20 +62,34 @@ AliHMPIDReconstructor::AliHMPIDReconstructor():AliReconstructor(),fUserCut(0),fD TObjArray *pUserCut = (TObjArray*)pUserCutEnt->GetObject(); for(Int_t iCh=AliHMPIDParam::kMinCh;iCh<=AliHMPIDParam::kMaxCh;iCh++){ //chambers loop fUserCut[iCh] = pUserCut->At(iCh)->GetUniqueID(); - Printf("HMPID: UserCut successfully loaded (from OCDB) for chamber %i -> %i ",iCh,fUserCut[iCh]); + AliDebug(1,Form("UserCut successfully loaded (from OCDB) for chamber %i -> %i ",iCh,fUserCut[iCh])); } } } - + + AliCDBEntry *pQthreEnt =AliCDBManager::Instance()->Get("HMPID/Calib/Qthre"); //contains TObjArray of 7 TF1 + if(!pQthreEnt) AliFatal("No Qthre available"); + TObjArray *pQthre = (TObjArray*)pQthreEnt->GetObject(); + for(Int_t iCh=AliHMPIDParam::kMinCh;iCh<=AliHMPIDParam::kMaxCh;iCh++) { + for(Int_t isec=0;isec<=5;isec++) { + TF1 *pfQthre = (TF1*)pQthre->At(6*iCh+isec); + Double_t tMin,tMax; + pfQthre->GetRange(tMin,tMax); + Double_t qthre=pfQthre->Eval(tMin); + AliDebug(1,Form("Qthre successfully loaded for chamber %i sector %i -> %f ",iCh,isec,qthre)); + } + } + + AliCDBEntry *pDaqSigEnt =AliCDBManager::Instance()->Get("HMPID/Calib/DaqSig"); //contains TObjArray of TObjArray 14 TMatrixF sigmas values for pads if(!pDaqSigEnt) AliFatal("No pedestals from DAQ!"); fDaqSig = (TObjArray*)pDaqSigEnt->GetObject(); for(Int_t iCh=AliHMPIDParam::kMinCh;iCh<=AliHMPIDParam::kMaxCh;iCh++){ //chambers loop - Printf(" HMPID: DaqSigCut successfully loaded for chamber %i -> %i ",iCh,(Int_t)fDaqSig->At(iCh)->GetUniqueID()); + AliDebug(1,Form("DaqSigCut successfully loaded for chamber %i -> %i ",iCh,(Int_t)fDaqSig->At(iCh)->GetUniqueID())); } }//AliHMPIDReconstructor //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -void AliHMPIDReconstructor::Dig2Clu(TObjArray *pDigAll,TObjArray *pCluAll,Bool_t isTryUnfold) +void AliHMPIDReconstructor::Dig2Clu(TObjArray *pDigAll,TObjArray *pCluAll,Int_t *pUserCut,Bool_t isTryUnfold) { // Finds all clusters for a given digits list provided not empty. Currently digits list is a list of all digits for a single chamber. // Puts all found clusters in separate lists, one per clusters. @@ -102,8 +116,7 @@ void AliHMPIDReconstructor::Dig2Clu(TObjArray *pDigAll,TObjArray *pCluAll,Bool_t AliHMPIDDigit *pDig=(AliHMPIDDigit*)pDigCur->At(iDig); //take current digit if(!(pDig=UseDig(pDig->PadChX(),pDig->PadChY(),pDigCur,&padMap))) continue; //this digit is already taken in FormClu(), go after next digit FormClu(&clu,pDig,pDigCur,&padMap); //form cluster starting from this digit by recursion - - clu.Solve(pCluCur,isTryUnfold); //solve this cluster and add all unfolded clusters to provided list + clu.Solve(pCluCur,pUserCut,isTryUnfold); //solve this cluster and add all unfolded clusters to provided list clu.Reset(); //empty current cluster }//digits loop for current chamber }//chambers loop @@ -136,11 +149,11 @@ void AliHMPIDReconstructor::Reconstruct(TTree *pDigTree,TTree *pCluTree)const // Returns: none AliDebug(1,"Start."); for(Int_t iCh=AliHMPIDParam::kMinCh;iCh<=AliHMPIDParam::kMaxCh;iCh++) { - pCluTree->Branch(Form("HMPID%d",iCh),&((*fClu)[iCh]),4000,0); + pCluTree->Branch(Form("HMPID%d",iCh),&((*fClu)[iCh]),7); pDigTree->SetBranchAddress(Form("HMPID%d",iCh),&((*fDig)[iCh])); } pDigTree->GetEntry(0); - Dig2Clu(fDig,fClu); //cluster finder + Dig2Clu(fDig,fClu,fUserCut); //cluster finder pCluTree->Fill(); //fill tree for current event for(Int_t iCh=AliHMPIDParam::kMinCh;iCh<=AliHMPIDParam::kMaxCh;iCh++){ @@ -160,31 +173,24 @@ void AliHMPIDReconstructor::ConvertDigits(AliRawReader *pRR,TTree *pDigTree)cons AliDebug(1,"Start."); // Int_t digcnt=0; + Int_t iDigCnt[7]={0,0,0,0,0,0,0}; - for(Int_t iCh=AliHMPIDParam::kMinCh;iCh<=AliHMPIDParam::kMaxCh;iCh++) { - pDigTree->Branch(Form("HMPID%d",iCh),&((*fDig)[iCh]),4000,0); + for(Int_t iCh=AliHMPIDParam::kMinCh;iCh<=AliHMPIDParam::kMaxCh;iCh++){ + pDigTree->Branch(Form("HMPID%d",iCh),&((*fDig)[iCh])); + } - Int_t iDigCnt=0; - AliHMPIDRawStream stream(pRR); - while(stream.Next()) - { - - UInt_t ddl=stream.GetDDLNumber(); //returns 0,1,2 ... 13 - if((UInt_t)(2*iCh)==ddl || (UInt_t)(2*iCh+1)==ddl) { - for(Int_t row = 1; row <= AliHMPIDRawStream::kNRows; row++){ - for(Int_t dil = 1; dil <= AliHMPIDRawStream::kNDILOGICAdd; dil++){ - for(Int_t pad = 0; pad < AliHMPIDRawStream::kNPadAdd; pad++){ - if(stream.GetCharge(ddl,row,dil,pad) < 1) continue; - AliHMPIDDigit dig(stream.GetPad(ddl,row,dil,pad),stream.GetCharge(ddl,row,dil,pad)); - if(!IsDigSurvive(&dig)) continue; - new((*((TClonesArray*)fDig->At(iCh)))[iDigCnt++]) AliHMPIDDigit(dig); //add this digit to the tmp list - }//pad - }//dil - }//row - }//while + AliHMPIDRawStream stream(pRR); + + while(stream.Next()) + { + Int_t ch = AliHMPIDParam::DDL2C(stream.GetDDLNumber()); + for(Int_t iPad=0;iPadAt(ch)))[iDigCnt[ch]++]) AliHMPIDDigit(dig); //add this digit to the tmp list } - stream.Delete(); } + pDigTree->Fill(); for(Int_t iCh=AliHMPIDParam::kMinCh;iCh<=AliHMPIDParam::kMaxCh;iCh++)fDig->At(iCh)->Clear();