X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=inline;f=ITS%2FAliITSRawCluster.cxx;h=a486539de5d3d66d805b8cecaa729bef8ffe589c;hb=88cb7938ca21d4a80991d4e7aa564008c29340f7;hp=3b9e14aafb2b39baa3ef9670f5760ae71f1f5a88;hpb=338e4f0675e466c7b05289cf8e0b4aa5fd023da2;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSRawCluster.cxx b/ITS/AliITSRawCluster.cxx index 3b9e14aafb2..a486539de5d 100644 --- a/ITS/AliITSRawCluster.cxx +++ b/ITS/AliITSRawCluster.cxx @@ -1,214 +1,241 @@ -#include +/************************************************************************** + * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +/* $Id$ */ + +#include #include #include "AliITSRawCluster.h" ClassImp(AliITSRawCluster) - ClassImp(AliITSRawClusterSDD) -//-------------------------------------- -AliITSRawClusterSDD::AliITSRawClusterSDD(Int_t wing, Float_t Anode,Float_t Time, Float_t Charge, - Float_t PeakAmplitude,Int_t PeakPosition, Float_t Asigma, Float_t Tsigma, Float_t DriftPath, Float_t AnodeOffset, Int_t Samples, - Int_t Tstart, Int_t Tstop, Int_t Tstartf, Int_t Tstopf, Int_t Anodes, Int_t Astart, Int_t Astop) -{ - // constructor - fWing = wing; - fAnode = Anode; - fTime = Time; - fQ = Charge; - fPeakAmplitude = PeakAmplitude; - fPeakPosition = PeakPosition; - fAsigma = Asigma; - fTsigma = Tsigma; - fNanodes = Anodes; - fTstart = Tstart; - fTstop = Tstop; - fTstartf = Tstartf; - fTstopf = Tstopf; - fAstart = Astart; - fAstop = Astop; - fMultiplicity = Samples; - fSumAmplitude = 0; - Int_t sign = 1; - for(Int_t i=0;iA()*clJ->Q())/(fQ+clJ->Q()); - fTime = (fTime*fQ + clJ->T()*clJ->Q())/(fQ+clJ->Q()); - fX = (fX*fQ + clJ->X()*clJ->Q())/(fQ+clJ->Q()); - fZ = (fZ*fQ + clJ->Z()*clJ->Q())/(fQ+clJ->Q()); - fQ += clJ->Q(); - if(fSumAmplitude == 0) fSumAmplitude += fPeakAmplitude; - /* - fAnode = (fAnode*fSumAmplitude+clJ->A()*clJ->PeakAmpl())/(fSumAmplitude+clJ->PeakAmpl()); - fTime = (fTime*fSumAmplitude +clJ->T()*clJ->PeakAmpl())/(fSumAmplitude+clJ->PeakAmpl()); - fX = (fX*fSumAmplitude +clJ->X()*clJ->PeakAmpl())/(fSumAmplitude+clJ->PeakAmpl()); - fZ = (fZ*fSumAmplitude +clJ->Z()*clJ->PeakAmpl())/(fSumAmplitude+clJ->PeakAmpl()); - */ - fSumAmplitude += clJ->PeakAmpl(); - - fTstart = clJ->Tstart(); - fTstop = clJ->Tstop(); - if(fTstartf > clJ->Tstartf()) fTstartf = clJ->Tstartf(); - if(fTstopf < clJ->Tstopf()) fTstopf = clJ->Tstopf(); - if(fAstop < clJ->Astop()) fAstop = clJ->Astop(); - - fMultiplicity += (Int_t) (clJ->Samples()); - (fNanodes)++; - if(clJ->PeakAmpl() > fPeakAmplitude) { - fPeakAmplitude = clJ->PeakAmpl(); - fPeakPosition = clJ->PeakPos(); - } - - return; -} - -//-------------------------------------- -Bool_t AliITSRawClusterSDD::Brother(AliITSRawClusterSDD* cluster,Float_t danode,Float_t dtime) { - - Bool_t brother = kFALSE; - - Bool_t test2 = kFALSE; - Bool_t test3 = kFALSE; - Bool_t test4 = kFALSE; - Bool_t test5 = kFALSE; + // add + + fAnode = (fAnode*fQ + clJ->A()*clJ->Q())/(fQ+clJ->Q()); + fTime = ( fTime*fQ + clJ->T()*clJ->Q())/(fQ+clJ->Q()); + fX = ( fX*fQ + clJ->X()*clJ->Q())/(fQ+clJ->Q()); + fZ = ( fZ*fQ + clJ->Z()*clJ->Q())/(fQ+clJ->Q()); + fQ += clJ->Q(); + if(fSumAmplitude == 0) fSumAmplitude += fPeakAmplitude; + /* + fAnode = (fAnode*fSumAmplitude+clJ->A()*clJ->PeakAmpl())/ + (fSumAmplitude+clJ->PeakAmpl()); + fTime = (fTime*fSumAmplitude +clJ->T()*clJ->PeakAmpl())/ + (fSumAmplitude+clJ->PeakAmpl()); + fX = (fX*fSumAmplitude +clJ->X()*clJ->PeakAmpl())/ + (fSumAmplitude+clJ->PeakAmpl()); + fZ = (fZ*fSumAmplitude +clJ->Z()*clJ->PeakAmpl())/ + (fSumAmplitude+clJ->PeakAmpl()); + */ + fSumAmplitude += clJ->PeakAmpl(); + + fTstart = clJ->Tstart(); + fTstop = clJ->Tstop(); + if(fTstartf > clJ->Tstartf()) fTstartf = clJ->Tstartf(); + if( fTstopf < clJ->Tstopf() ) fTstopf = clJ->Tstopf(); + if( fAstop < clJ->Astop() ) fAstop = clJ->Astop(); + + fMultiplicity += (Int_t) (clJ->Samples()); + (fNanodes)++; + if(clJ->PeakAmpl() > fPeakAmplitude) { + fPeakAmplitude = clJ->PeakAmpl(); + fPeakPosition = clJ->PeakPos(); + } // end if + + return; +} +//______________________________________________________________________ +Bool_t AliITSRawClusterSDD::Brother(AliITSRawClusterSDD* cluster, + Float_t danode,Float_t dtime) { + + Bool_t brother = kFALSE; + Bool_t test2 = kFALSE; + Bool_t test3 = kFALSE; + Bool_t test4 = kFALSE; + Bool_t test5 = kFALSE; - if(fWing != cluster->W()) return brother; + if(fWing != cluster->W()) return brother; - if(fTstopf >= cluster->Tstart() && fTstartf <= cluster->Tstop()) test2 = kTRUE; - if(cluster->Astop() == (fAstop+1)) test3 = kTRUE; + if(fTstopf >= cluster->Tstart() && + fTstartf <= cluster->Tstop()) test2 = kTRUE; + if(cluster->Astop() == (fAstop+1)) test3 = kTRUE; - if(TMath::Abs(fTime-cluster->T()) < dtime) test4 = kTRUE; - if(TMath::Abs(fAnode-cluster->A()) < danode) test5 = kTRUE; + if(TMath::Abs(fTime-cluster->T()) < dtime) test4 = kTRUE; + if(TMath::Abs(fAnode-cluster->A()) < danode) test5 = kTRUE; - if((test2 && test3) || (test4 && test5) ) { - return brother = kTRUE; - } + if((test2 && test3) || (test4 && test5) ) { + return brother = kTRUE; + } // end if - return brother; + return brother; } - -//-------------------------------------- +//______________________________________________________________________ void AliITSRawClusterSDD::PrintInfo() { - // print - cout << ", Anode " << fAnode << ", Time: " << fTime << ", Charge: " << fQ; - cout << ", Samples: " << fMultiplicity; - cout << ", X: " << fX << ", Z: " << fZ << "tstart " << fTstart << "tstop "<< fTstop <fZStop < clJ->ZStop()) this->fZStop = clJ->ZStop(); - - this->fZ = this->fZ + clJ->Z(); - this->fX = (this->fX + clJ->X())/2.; - this->fQ = this->fQ + clJ->Q(); - - this->fXStart = clJ->XStart(); // for a comparison with the next - this->fXStop = clJ->XStop(); // z column - - if(this->fXStartf > clJ->XStartf()) this->fXStartf = clJ->XStartf(); - if(this->fXStopf < clJ->XStopf()) this->fXStopf = clJ->XStopf(); - if(this->fZend < clJ->Zend()) this->fZend = clJ->Zend(); - this->fNClX = this->fXStopf - this->fXStartf + 1; - (this->fNClZ)++; - - return; -} - -//-------------------------------------- -Bool_t AliITSRawClusterSPD::Brother(AliITSRawClusterSPD* cluster,Float_t dz,Float_t dx) { - // fXStart, fXstop and fZend information is used now instead of dz and dx - // to check an absent (or a present) of the gap between two pixels in - // both x and z directions. The increasing order of fZend is used. - - Bool_t brother = kFALSE; - Bool_t test2 = kFALSE; - Bool_t test3 = kFALSE; - - // Diagonal clusters are included: - if(fXStop >= (cluster->XStart() -1) && fXStart <= (cluster->XStop()+1)) test2 = kTRUE; - - // Diagonal clusters are excluded: - // if(fXStop >= cluster->XStart() && fXStart <= cluster->XStop()) test2 = kTRUE; - if(cluster->Zend() == (fZend + 1)) test3 = kTRUE; - if(test2 && test3) { - // cout<<"test 2,3 0k, brother = true "<fZStop < clJ->ZStop()) this->fZStop = clJ->ZStop(); + this->fZ = this->fZ + clJ->Z(); + this->fX = (this->fX + clJ->X())/2.; + this->fQ = this->fQ + clJ->Q(); + this->fXStart = clJ->XStart(); // for a comparison with the next + this->fXStop = clJ->XStop(); // z column + if(this->fZend < clJ->Zend()) this->fZend = clJ->Zend(); + this->fNClX = this->fXStop - this->fXStart + 1; + (this->fNClZ)++; + + return; } - -//-------------------------------------- -void AliITSRawClusterSPD::PrintInfo() -{ - // print - cout << ", Z: " << fZ << ", X: " << fX << ", Charge: " << fQ<= (cluster->XStart() -1) && + fXStart <= (cluster->XStop()+1)) test2 = kTRUE; + + // Diagonal clusters are excluded: + // if(fXStop >= cluster->XStart() && + // fXStart <= cluster->XStop()) test2 = kTRUE; + if(cluster->Zend() == (fZend + 1)) test3 = kTRUE; + if(test2 && test3) { + // cout<<"test 2,3 0k, brother = true "<