#include "AliTRDCalibraVdriftLinearFit.h"
#include "AliTRDcalibDB.h"
+#include "AliCDBId.h"
+#include "AliLog.h"
#include "AliTRDCalibTask.h"
fNbMaxCluster(2),
fOfflineTracks(kFALSE),
fStandaloneTracks(kFALSE),
+ fVersionGainUsed(-1),
+ fSubVersionGainUsed(-1),
+ fVersionGainLocalUsed(-1),
+ fSubVersionGainLocalUsed(-1),
+ fVersionVdriftUsed(-1),
+ fSubVersionVdriftUsed(-1),
fCalDetGain(0x0),
fMaxEvent(0),
fCounter(0),
fNbTimeBins = 30;
}
}
-
+
// instance calibration
fTRDCalibraFillHisto = AliTRDCalibraFillHisto::Instance();
fTRDCalibraFillHisto->SetHisto2d(fHisto2d); // choose to use histograms
// output list
fListHist = new TList();
+ fListHist->SetOwner();
if(fHisto2d) {
fListHist->Add(fTRDCalibraFillHisto->GetCH2d());
fListHist->Add(fTRDCalibraFillHisto->GetPH2d());
fListHist->Add(fNbTrackletsStandalone);
}
+
+ delete [] binLimLogPt;
+ delete [] binLimPt;
+
//cout << "AliTRDCalibTask::UserCreateOutputObjects() OUT" << endl;
-}
+}
//________________________________________________________________________
void AliTRDCalibTask::UserExec(Option_t *)
//
//cout << "AliTRDCalibTask::Exec() IN" << endl;
+ // Init Versions and subversions used
+ if((fVersionGainUsed==-1) || (fSubVersionGainUsed==-1) || (fVersionGainLocalUsed==-1) || (fSubVersionGainLocalUsed==-1) || (fVersionVdriftUsed==-1) || (fSubVersionVdriftUsed==-1)) {
+ if(!SetVersionSubversion()) {
+ fVersionGainUsed=0;
+ fSubVersionGainUsed=0;
+ fVersionGainLocalUsed=0;
+ fSubVersionGainLocalUsed=0;
+ fVersionVdriftUsed=0;
+ fSubVersionVdriftUsed=0;
+ }
+ }
+ if(fCounter==0) {
+ fTRDCalibraFillHisto->SetVersionGainUsed(fVersionGainUsed); // Gain Used
+ fTRDCalibraFillHisto->SetSubVersionGainUsed(fSubVersionGainUsed); // Gain Used
+ fTRDCalibraFillHisto->SetVersionGainLocalUsed(fVersionGainLocalUsed); // Gain Used
+ fTRDCalibraFillHisto->SetSubVersionGainLocalUsed(fSubVersionGainLocalUsed); // Gain Used
+ fTRDCalibraFillHisto->SetVersionVdriftUsed(fVersionVdriftUsed); // Vdrift Used
+ fTRDCalibraFillHisto->SetSubVersionVdriftUsed(fSubVersionVdriftUsed); // Vdrift Used
+ fTRDCalibraFillHisto->InitCalDet();
+ }
+
// AliLog::SetGlobalLogLevel(AliLog::kError);
// cout << "AliTRDCalibTask::Exec() 1" << endl;
fESD = dynamic_cast<AliESDEvent*>(fInputEvent);
return;
}
+
fESDfriend = dynamic_cast<AliESDfriend*> (fESD->FindListObject("AliESDfriend"));
if(!fESDfriend){
AliError("fESDfriend not available");
//ULong_t status = fkEsdTrack->GetStatus();
fFriendTrack = fESDfriend->GetTrack(itrk);
- if(!fFriendTrack) continue;
+ if(!fFriendTrack) {
+ //printf("No friend track %d\n",itrk);
+ continue;
+ }
//////////////////////////////////////
// Loop on calibration objects
//////////////////////////////////////
Int_t icalib=0;
Int_t nTRDtrackV1=0;
while((fCalibObject = (TObject *)(fFriendTrack->GetCalibObject(icalib++)))){
+ //printf("Name %s\n",fCalibObject->IsA()->GetName());
if(strcmp(fCalibObject->IsA()->GetName(), "AliTRDtrackV1") != 0) continue;
//printf("Find the calibration object\n");
++nTRDtrackV1;
first += 1;
}
else {
- histolinearfitsum ->Add(linearfit->GetLinearFitterHisto(det));
+ if (histolinearfitsum) {
+ histolinearfitsum->Add(linearfit->GetLinearFitterHisto(det));
+ }
}
}
}
return 0;
}
+//_____________________________________________________
+Bool_t AliTRDCalibTask::SetVersionSubversion(){
+ //
+ // Load Chamber Gain factors into the Tender supply
+ //
+
+ printf("SetVersionSubversion\n");
+
+ //find previous entry from the UserInfo
+ TTree *tree=((TChain*)GetInputData(0))->GetTree();
+ if (!tree) {
+ AliError("Tree not found in ESDhandler");
+ return kFALSE;
+ }
+
+ TList *userInfo=(TList*)tree->GetUserInfo();
+ if (!userInfo) {
+ AliError("No UserInfo found in tree");
+ return kFALSE;
+ }
+
+ TList *cdbList=(TList*)userInfo->FindObject("cdbList");
+ if (!cdbList) {
+ AliError("No cdbList found in UserInfo");
+ if (AliLog::GetGlobalLogLevel()>=AliLog::kError) userInfo->Print();
+ return kFALSE;
+ }
+
+ TIter nextCDB(cdbList);
+ TObjString *os=0x0;
+ while ( (os=(TObjString*)nextCDB()) ){
+ if(os->GetString().Contains("TRD/Calib/ChamberGainFactor")){
+ // Get Old gain calibration
+ AliCDBId *id=AliCDBId::MakeFromString(os->GetString());
+ fVersionGainUsed = id->GetVersion();
+ fSubVersionGainUsed = id->GetSubVersion();
+ } else if(os->GetString().Contains("TRD/Calib/ChamberVdrift")){
+ // Get Old drift velocity calibration
+ AliCDBId *id=AliCDBId::MakeFromString(os->GetString());
+ fVersionVdriftUsed = id->GetVersion();
+ fSubVersionVdriftUsed = id->GetSubVersion();
+ } else if(os->GetString().Contains("TRD/Calib/LocalGainFactor")){
+ // Get Old drift velocity calibration
+ AliCDBId *id=AliCDBId::MakeFromString(os->GetString());
+ fVersionGainLocalUsed = id->GetVersion();
+ fSubVersionGainLocalUsed = id->GetSubVersion();
+ }
+ }
+
+ //printf("VersionGain %d, SubversionGain %d, VersionLocalGain %d, Subversionlocalgain %d, Versionvdrift %d, Subversionvdrift %d\n",fVersionGainUsed,fSubVersionGainUsed,fVersionGainLocalUsed,fSubVersionGainLocalUsed,fVersionVdriftUsed,fSubVersionVdriftUsed);
+
+ // Check
+ if((fVersionGainUsed < 0) || (fVersionGainLocalUsed < 0) || (fSubVersionGainUsed < 0) || (fSubVersionGainLocalUsed < 0) || (fVersionVdriftUsed < 0) || (fSubVersionVdriftUsed < 0)) {
+ AliError("No recent calibration found");
+ return kFALSE;
+ }
+ else return kTRUE;
+
+}
+