#include "AliTRDCalibraMode.h"
#include "AliTRDCalibraVector.h"
#include "AliTRDCalibraVdriftLinearFit.h"
+#include "AliTRDCalibraExbAltFit.h"
#include "AliTRDcalibDB.h"
#include "AliTRDCommonParam.h"
#include "AliTRDpadPlane.h"
#include "AliRawReader.h"
#include "AliRawReaderDate.h"
#include "AliTRDgeometry.h"
+#include "AliTRDfeeParam.h"
#include "./Cal/AliTRDCalROC.h"
#include "./Cal/AliTRDCalPad.h"
#include "./Cal/AliTRDCalDet.h"
,fVector2d(kFALSE)
,fLinearFitterOn(kFALSE)
,fLinearFitterDebugOn(kFALSE)
+ ,fExbAltFitOn(kFALSE)
,fRelativeScale(0)
,fThresholdClusterPRF2(15.0)
,fLimitChargeIntegration(kFALSE)
,fNormalizeNbOfCluster(kFALSE)
,fMaxCluster(0)
,fNbMaxCluster(0)
+ ,fFirstRunGain(0)
,fVersionGainUsed(0)
,fSubVersionGainUsed(0)
+ ,fFirstRunGainLocal(0)
,fVersionGainLocalUsed(0)
,fSubVersionGainLocalUsed(0)
+ ,fFirstRunVdrift(0)
,fVersionVdriftUsed(0)
,fSubVersionVdriftUsed(0)
+ ,fFirstRunExB(0)
+ ,fVersionExBUsed(0)
+ ,fSubVersionExBUsed(0)
,fCalibraMode(new AliTRDCalibraMode())
,fDebugStreamer(0)
,fDebugLevel(0)
,fCH2d(0x0)
,fLinearFitterArray(540)
,fLinearVdriftFit(0x0)
+ ,fExbAltFit(0x0)
,fCalDetGain(0x0)
,fCalROCGain(0x0)
{
,fVector2d(c.fVector2d)
,fLinearFitterOn(c.fLinearFitterOn)
,fLinearFitterDebugOn(c.fLinearFitterDebugOn)
+ ,fExbAltFitOn(c.fExbAltFitOn)
,fRelativeScale(c.fRelativeScale)
,fThresholdClusterPRF2(c.fThresholdClusterPRF2)
,fLimitChargeIntegration(c.fLimitChargeIntegration)
,fNormalizeNbOfCluster(c.fNormalizeNbOfCluster)
,fMaxCluster(c.fMaxCluster)
,fNbMaxCluster(c.fNbMaxCluster)
+ ,fFirstRunGain(c.fFirstRunGain)
,fVersionGainUsed(c.fVersionGainUsed)
,fSubVersionGainUsed(c.fSubVersionGainUsed)
+ ,fFirstRunGainLocal(c.fFirstRunGainLocal)
,fVersionGainLocalUsed(c.fVersionGainLocalUsed)
,fSubVersionGainLocalUsed(c.fSubVersionGainLocalUsed)
+ ,fFirstRunVdrift(c.fFirstRunVdrift)
,fVersionVdriftUsed(c.fVersionVdriftUsed)
,fSubVersionVdriftUsed(c.fSubVersionVdriftUsed)
+ ,fFirstRunExB(c.fFirstRunExB)
+ ,fVersionExBUsed(c.fVersionExBUsed)
+ ,fSubVersionExBUsed(c.fSubVersionExBUsed)
,fCalibraMode(0x0)
,fDebugStreamer(0)
,fDebugLevel(c.fDebugLevel)
,fCH2d(0x0)
,fLinearFitterArray(540)
,fLinearVdriftFit(0x0)
+ ,fExbAltFit(0x0)
,fCalDetGain(0x0)
,fCalROCGain(0x0)
{
if(c.fLinearVdriftFit){
fLinearVdriftFit = new AliTRDCalibraVdriftLinearFit(*c.fLinearVdriftFit);
}
+ if(c.fExbAltFit){
+ fExbAltFit = new AliTRDCalibraExbAltFit(*c.fExbAltFit);
+ }
if(c.fCalDetGain) fCalDetGain = new AliTRDCalDet(*c.fCalDetGain);
if(c.fCalROCGain) fCalROCGain = new AliTRDCalROC(*c.fCalROCGain);
if(f) { delete f;}
}
if(fLinearVdriftFit) delete fLinearVdriftFit;
+ if(fExbAltFit) delete fExbAltFit;
if (fGeo) {
delete fGeo;
}
}
}
fLinearVdriftFit = new AliTRDCalibraVdriftLinearFit();
+ TString nameee("Ver");
+ nameee += fVersionExBUsed;
+ nameee += "Subver";
+ nameee += fSubVersionExBUsed;
+ nameee += "FirstRun";
+ nameee += fFirstRunExB;
+ nameee += "Nz";
+ fLinearVdriftFit->SetNameCalibUsed(nameee);
+ }
+ if(fExbAltFitOn){
+ fExbAltFit = new AliTRDCalibraExbAltFit();
}
if (fPRF2dOn) {
// DB Setting
// Get cal
- AliCDBEntry *entry = AliCDBManager::Instance()->Get("TRD/Calib/ChamberGainFactor",AliCDBManager::Instance()->GetRun(),fVersionGainUsed,fSubVersionGainUsed);
+ AliCDBEntry *entry = AliCDBManager::Instance()->Get("TRD/Calib/ChamberGainFactor",fFirstRunGain,fVersionGainUsed,fSubVersionGainUsed);
if(!entry) {
AliError("No gain det calibration entry found");
return kFALSE;
name += fVersionGainUsed;
name += "Subver";
name += fSubVersionGainUsed;
+ name += "FirstRun";
+ name += fFirstRunGain;
name += "Nz";
name += fCalibraMode->GetNz(0);
name += "Nrphi";
namee += fVersionVdriftUsed;
namee += "Subver";
namee += fSubVersionVdriftUsed;
+ namee += "FirstRun";
+ namee += fFirstRunVdrift;
namee += "Nz";
namee += fCalibraMode->GetNz(1);
namee += "Nrphi";
fPH2d->SetTitle(namee);
+ // title AliTRDCalibraVdriftLinearFit
+ TString nameee("Ver");
+ nameee += fVersionExBUsed;
+ nameee += "Subver";
+ nameee += fSubVersionExBUsed;
+ nameee += "FirstRun";
+ nameee += fFirstRunExB;
+ nameee += "Nz";
+
+
+ fLinearVdriftFit->SetNameCalibUsed(nameee);
+
+
return kTRUE;
// Add the charge if shared cluster
cls = tracklet->GetClusters(jc+AliTRDseedV1::kNtb);
//
- StoreInfoCHPHtrack(cl, tracklet->GetdQdl(jc),group,row,col,cls);
+ StoreInfoCHPHtrack(cl, tracklet->GetQperTB(jc),group,row,col,cls); //tracklet->GetdQdl(jc)
}
////////////////////////////////////////
//////////////////////////////////
// Loop clusters
//////////////////////////////////
+
+ Float_t sigArr[AliTRDfeeParam::GetNcol()];
+ memset(sigArr, 0, AliTRDfeeParam::GetNcol()*sizeof(sigArr[0]));
+ Int_t ncl=0, tbf=0, tbl=0;
+
for(int ic=0; ic<AliTRDseedV1::kNtb; ic++){
if(!(cl = tracklet->GetClusters(ic))) continue;
+
+ if(!tbf) tbf=ic;
+ tbl=ic;
+ ncl++;
+ Int_t col = cl->GetPadCol();
+ for(int ip=-1, jp=2; jp<5; ip++, jp++){
+ Int_t idx=col+ip;
+ if(idx<0 || idx>=AliTRDfeeParam::GetNcol()) continue;
+ sigArr[idx]+=((Float_t)cl->GetSignals()[jp]);
+ }
+
if((fLimitChargeIntegration) && (!cl->IsInChamber())) continue;
Double_t ycluster = cl->GetY();
TVectorD pars;
fLinearFitterTracklet->Eval();
fLinearFitterTracklet->GetParameters(pars);
- pointError = TMath::Sqrt(fLinearFitterTracklet->GetChisquare()/(nbli-2));
+ pointError = TMath::Sqrt(TMath::Abs(fLinearFitterTracklet->GetChisquare()/(nbli-2)));
errorpar = fLinearFitterTracklet->GetParError(1)*pointError;
dydt = pars[1];
//printf("chis %f, nbli %d, pointError %f, parError %f, errorpar %f\n",fLinearFitterTracklet->GetChisquare(),nbli,pointError,fLinearFitterTracklet->GetParError(1),errorpar);
fLinearFitterTracklet->ClearPoints();
+
+ ////////////////////////////////////
+ // Calc the projection of the clusters on the y direction
+ ///////////////////////////////////
+
+ Float_t signalSum(0.);
+ Float_t mean = 0.0, rms = 0.0;
+ Float_t dydx = tracklet->GetYref(1), tilt = tracklet->GetTilt(); // ,dzdx = tracklet->GetZref(1); (identical to the previous definition!)
+ Float_t dz = dzdx*(tbl-tbf)/10;
+ if(ncl>10){
+ for(Int_t ip(0); ip<AliTRDfeeParam::GetNcol(); ip++){
+ signalSum+=sigArr[ip];
+ mean+=ip*sigArr[ip];
+ }
+ if(signalSum > 0.0) mean/=signalSum;
+
+ for(Int_t ip = 0; ip<AliTRDfeeParam::GetNcol(); ip++)
+ rms+=sigArr[ip]*(ip-mean)*(ip-mean);
+
+ if(signalSum > 0.0) rms = TMath::Sqrt(TMath::Abs(rms/signalSum));
+
+ rms -= TMath::Abs(dz*tilt);
+ dydx -= dzdx*tilt;
+ }
////////////////////////////////
// Debug stuff
///////////////////////////////
- if(fDebugLevel > 0){
+ //if(fDebugLevel > 0){
if ( !fDebugStreamer ) {
//debug stream
TDirectory *backup = gDirectory;
if ( backup ) backup->cd(); //we don't want to be cd'd to the debug streamer
}
-
+ float xcoord = tnp-dzdx*tnt;
+ float pt = tracklet->GetPt();
Int_t layer = GetLayer(fDetectorPreviousTrack);
(* fDebugStreamer) << "FindP1TrackPHtrackletV1"<<
"crossrow="<<crossrow<<
"errorpar="<<errorpar<<
"pointError="<<pointError<<
+ "xcoord="<<xcoord<<
+ "pt="<<pt<<
+ "rms="<<rms<<
+ "dydx="<<dydx<<
+ "dz="<<dz<<
+ "tilt="<<tilt<<
+ "ncl="<<ncl<<
"\n";
- }
+ //}
/////////////////////////
// Cuts quality
fLinearVdriftFit->Update(fDetectorPreviousTrack,x,pars[1]);
}
}
+ if(fExbAltFitOn){
+ fExbAltFit->Update(fDetectorPreviousTrack,dydx,rms);
+ }
return kTRUE;
}
return kFALSE;
}
- if (!cal->IsChamberInstalled(detector) ||
- cal->IsChamberMasked(detector) ||
+ if (!cal->IsChamberGood(detector) ||
+ cal->IsChamberNoData(detector) ||
cal->IsPadMasked(detector,col,row)) {
return kFALSE;
}
if(fIsHLT) correctthegain = fCalDetGain->GetValue(fDetectorPreviousTrack);
else correctthegain = fCalDetGain->GetValue(fDetectorPreviousTrack)*fCalROCGain->GetValue(col,row);
Float_t correction = 1.0;
- Float_t normalisation = 6.67;
+ Float_t normalisation = 1.13; //org: 6.67; 1st: 1.056; 2nd: 1.13;
// we divide with gain in AliTRDclusterizer::Transform...
if( correctthegain > 0 ) normalisation /= correctthegain;
//
AliTRDrawStream *rawStream = new AliTRDrawStream(rawReader);
- rawStream->SetNoErrorWarning();
- rawStream->SetSharedPadReadout(kFALSE);
AliTRDdigitsManager *digitsManager = new AliTRDdigitsManager(kTRUE);
digitsManager->CreateArrays();
name += fVersionVdriftUsed;
name += "Subver";
name += fSubVersionVdriftUsed;
+ name += "FirstRun";
+ name += fFirstRunVdrift;
name += "Nz";
name += fCalibraMode->GetNz(1);
name += "Nrphi";
name += fVersionGainUsed;
name += "Subver";
name += fSubVersionGainUsed;
+ name += "FirstRun";
+ name += fFirstRunGain;
name += "Nz";
name += fCalibraMode->GetNz(0);
name += "Nrphi";