Skip to content

Commit

Permalink
Modifications for 100 classes implemented in STEER
Browse files Browse the repository at this point in the history
  • Loading branch information
lietava committed Nov 2, 2014
1 parent e62112a commit 2c3aa4a
Show file tree
Hide file tree
Showing 8 changed files with 86 additions and 14 deletions.
6 changes: 5 additions & 1 deletion STEER/ESD/AliESD.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ AliESD::AliESD():
fTimeStamp(0),
fEventType(0),
fTriggerMask(0),
fTriggerMaskNext50(0),
fTriggerCluster(0),
fRecoVersion(0),
fMagneticField(0),
Expand Down Expand Up @@ -101,6 +102,7 @@ AliESD::AliESD(const AliESD& esd):
fTimeStamp(esd.fTimeStamp),
fEventType(esd.fEventType),
fTriggerMask(esd.fTriggerMask),
fTriggerMaskNext50(esd.fTriggerMaskNext50),
fTriggerCluster(esd.fTriggerCluster),
fRecoVersion(esd.fRecoVersion),
fMagneticField(esd.fMagneticField),
Expand Down Expand Up @@ -196,6 +198,7 @@ void AliESD::Reset()
fTimeStamp = 0;
fEventType = 0;
fTriggerMask=0;
fTriggerMaskNext50=0;
fTriggerCluster=0;
fRecoVersion=0;
fMagneticField=0;
Expand Down Expand Up @@ -556,13 +559,14 @@ void AliESD::Print(Option_t *) const
// Print header information of the event
//
printf("ESD run information\n");
printf("Event # in file %d Bunch crossing # %d Orbit # %d Period # %d Run # %d Trigger %lld Magnetic field %f \n",
printf("Event # in file %d Bunch crossing # %d Orbit # %d Period # %d Run # %d Trigger %lld %lld Magnetic field %f \n",
GetEventNumberInFile(),
GetBunchCrossNumber(),
GetOrbitNumber(),
GetPeriodNumber(),
GetRunNumber(),
GetTriggerMask(),
GetTriggerMaskNext50(),
GetMagneticField() );
printf("Vertex: (%.4f +- %.4f, %.4f +- %.4f, %.4f +- %.4f) cm\n",
fPrimaryVertex.GetX(), fPrimaryVertex.GetXRes(),
Expand Down
5 changes: 4 additions & 1 deletion STEER/ESD/AliESD.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ class AliESD : public TObject {
void SetTimeStamp(UInt_t timeStamp){fTimeStamp = timeStamp;}
void SetEventType(UInt_t eventType){fEventType = eventType;}
void SetTriggerMask(ULong64_t n) {fTriggerMask=n;}
void SetTriggerMaskNext50(ULong64_t n) {fTriggerMaskNext50=n;}
void SetTriggerCluster(UChar_t n) {fTriggerCluster = n;}
void SetMagneticField(Float_t mf){fMagneticField = mf;}
Float_t GetMagneticField() const {return fMagneticField;}
Expand Down Expand Up @@ -168,6 +169,7 @@ class AliESD : public TObject {
UInt_t GetTimeStamp() const { return fTimeStamp;}
UInt_t GetEventType() const { return fEventType;}
ULong64_t GetTriggerMask() const {return fTriggerMask;}
ULong64_t GetTriggerMaskNext50() const {return fTriggerMaskNext50;}
UChar_t GetTriggerCluster() const {return fTriggerCluster;}

Int_t GetNumberOfTracks() const {return fTracks.GetEntriesFast();}
Expand Down Expand Up @@ -266,6 +268,7 @@ class AliESD : public TObject {
UInt_t fTimeStamp; // Time stamp
UInt_t fEventType; // Type of Event
ULong64_t fTriggerMask; // Trigger Type (mask)
ULong64_t fTriggerMaskNext50; // Trigger Type (mask)
UChar_t fTriggerCluster; // Trigger cluster (mask)
Int_t fRecoVersion; // Version of reconstruction
Float_t fMagneticField; // Solenoid Magnetic Field in kG : for compatibility with AliMagF
Expand Down Expand Up @@ -319,7 +322,7 @@ class AliESD : public TObject {
AliESDAD *fESDAD; // AD ESD object containing bit pattern
TClonesArray fErrorLogs; // Raw-data reading error messages

ClassDef(AliESD,23) //ESD class
ClassDef(AliESD,24) //ESD class
};
#endif

25 changes: 22 additions & 3 deletions STEER/ESD/AliESDEvent.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -583,16 +583,24 @@ Bool_t AliESDEvent::IsDetectorInTriggerCluster(TString detector, AliTriggerConfi
// Check if a given detector was read-out in the analyzed event
const TObjArray& classesArray=trigConf->GetClasses();
ULong64_t trigMask=GetTriggerMask();
ULong64_t trigMaskNext50=GetTriggerMaskNext50();
Int_t nclasses = classesArray.GetEntriesFast();
for(Int_t iclass=0; iclass < nclasses; iclass++ ) {
AliTriggerClass* trclass = (AliTriggerClass*)classesArray.At(iclass);
Int_t classMask=trclass->GetMask();
ULong64_t classMask=trclass->GetMask();
ULong64_t classMaskNext50=trclass->GetMaskNext50();
if(trigMask & classMask){
TString detList=trclass->GetCluster()->GetDetectorsInCluster();
if(detList.Contains(detector.Data())){
return kTRUE;
}
}
if(trigMaskNext50 & classMaskNext50){
TString detList=trclass->GetCluster()->GetDetectorsInCluster();
if(detList.Contains(detector.Data())){
return kTRUE;
}
}
}
return kFALSE;
}
Expand All @@ -603,13 +611,14 @@ void AliESDEvent::Print(Option_t *) const
// Print header information of the event
//
printf("ESD run information\n");
printf("Event # in file %d Bunch crossing # %d Orbit # %d Period # %d Run # %d Trigger %lld Magnetic field %f \n",
printf("Event # in file %d Bunch crossing # %d Orbit # %d Period # %d Run # %d Trigger %lld %lld Magnetic field %f \n",
GetEventNumberInFile(),
GetBunchCrossNumber(),
GetOrbitNumber(),
GetPeriodNumber(),
GetRunNumber(),
GetTriggerMask(),
GetTriggerMaskNext50(),
GetMagneticField() );
if (fPrimaryVertex)
printf("Vertex: (%.4f +- %.4f, %.4f +- %.4f, %.4f +- %.4f) cm\n",
Expand Down Expand Up @@ -2033,19 +2042,29 @@ Bool_t AliESDEvent::IsEventSelected(const char *trigExpr) const
// trigExpr can be any logical expression
// of the trigger classes defined in AliESDRun
// In case of wrong syntax return kTRUE.
// Modified by rl for 100 classes - to be tested

TString expr(trigExpr);
if (expr.IsNull()) return kTRUE;

ULong64_t mask = GetTriggerMask();
for(Int_t itrig = 0; itrig < AliESDRun::kNTriggerClasses; itrig++) {
for(Int_t itrig = 0; itrig < AliESDRun::kNTriggerClasses/2; itrig++) {
if (mask & (1ull << itrig)) {
expr.ReplaceAll(GetESDRun()->GetTriggerClass(itrig),"1");
}
else {
expr.ReplaceAll(GetESDRun()->GetTriggerClass(itrig),"0");
}
}
ULong64_t maskNext50 = GetTriggerMaskNext50();
for(Int_t itrig = 0; itrig < AliESDRun::kNTriggerClasses/2; itrig++) {
if (maskNext50 & (1ull << itrig)) {
expr.ReplaceAll(GetESDRun()->GetTriggerClass(itrig+50),"1");
}
else {
expr.ReplaceAll(GetESDRun()->GetTriggerClass(itrig+50),"0");
}
}

Int_t error;
if ((gROOT->ProcessLineFast(expr.Data(),&error) == 0) &&
Expand Down
5 changes: 3 additions & 2 deletions STEER/ESD/AliESDHeader.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -218,11 +218,12 @@ Bool_t AliESDHeader::AddTriggerIR(const AliTriggerIR* ir)
void AliESDHeader::Print(const Option_t *) const
{
// Print some data members
printf("Event # %d in file Bunch crossing # %d Orbit # %d Trigger %lld \n",
printf("Event # %d in file Bunch crossing # %d Orbit # %d Trigger %lld %lld\n",
GetEventNumberInFile(),
GetBunchCrossNumber(),
GetOrbitNumber(),
GetTriggerMask());
GetTriggerMask(),
GetTriggerMaskNext50());
printf("List of the active trigger inputs: ");
for(Int_t i = 0; i < kNTriggerInputs; i++) {
TNamed *str = (TNamed *)((fTriggerInputsNames).At(i));
Expand Down
45 changes: 40 additions & 5 deletions STEER/ESD/AliESDRun.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ void AliESDRun::Reset()
}

//______________________________________________________________________________
void AliESDRun::SetTriggerClass(const char*name, Int_t index)
void AliESDRun::SetTriggerClass(const char* name, Int_t index)
{
// Fill the trigger class name
// into the corresponding array
Expand Down Expand Up @@ -304,9 +304,9 @@ TString AliESDRun::GetFiredTriggerClasses(ULong64_t mask) const
// list of trigger classes that
// have been fired. Uses the trigger
// class mask as an argument.
// Works both for first50 and next50 classes
// Works for first50
TString trclasses;
for(Int_t i = 0; i < kNTriggerClasses; i++) {
for(Int_t i = 0; i < kNTriggerClasses/2; i++) {
if (mask & (1ull << i)) {
TNamed *str = (TNamed *)((fTriggerClasses).At(i));
if (str) {
Expand All @@ -319,20 +319,55 @@ TString AliESDRun::GetFiredTriggerClasses(ULong64_t mask) const

return trclasses;
}

//______________________________________________________________________________
TString AliESDRun::GetFiredTriggerClassesNext50(ULong64_t mask) const
{
// Constructs and returns the
// list of trigger classes that
// have been fired. Uses the trigger
// class mask as an argument.
// Works for next50 classes
TString trclasses;
for(Int_t i = 0; i < kNTriggerClasses/2; i++) {
if (mask & (1ull << i)) {
TNamed *str = (TNamed *)((fTriggerClasses).At(i+50));
if (str) {
trclasses += " ";
trclasses += str->GetName();
trclasses += " ";
}
}
}
return trclasses;
}
//______________________________________________________________________________
TString AliESDRun::GetFiredTriggerClasses(ULong64_t masklow,ULong64_t maskhigh) const
{
// Contruct and returns list of trigger classes for 100 classes
TString trclasseslow;
trclasseslow = GetFiredTriggerClasses(masklow);
TString trclasseshigh;
trclasseshigh = GetFiredTriggerClasses(maskhigh);
trclasseshigh = GetFiredTriggerClassesNext50(maskhigh);
TString trclasses;
trclasses = trclasseslow+trclasseshigh;
return trclasses;
}
//______________________________________________________________________________
void AliESDRun::PrintAllTriggerClasses() const
{
TString trclasses;
for(Int_t i = 0; i < kNTriggerClasses; i++) {
TNamed *str = (TNamed *)((fTriggerClasses).At(i));
if (str) {
printf("%03i:",i+1);
printf("%s ",str->GetName());
}else{
//printf("NO ");
}
}
printf("\n");
}
//______________________________________________________________________________
Bool_t AliESDRun::IsTriggerClassFired(ULong64_t mask, const char *name) const
{
// Checks if the trigger class
Expand Down
2 changes: 2 additions & 0 deletions STEER/ESD/AliESDRun.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,9 @@ class AliESDRun: public TObject {
const char* GetTriggerClass(Int_t index) const;
TString GetActiveTriggerClasses() const;
TString GetFiredTriggerClasses(ULong64_t mask) const;
TString GetFiredTriggerClassesNext50(ULong64_t mask) const;
TString GetFiredTriggerClasses(ULong64_t mask,ULong64_t mask2) const;
void PrintAllTriggerClasses() const;
Bool_t IsTriggerClassFired(ULong64_t mask, const char *name) const;
Bool_t IsTriggerClassFired(ULong64_t mask, ULong64_t mask2,const char *name) const;
Float_t GetCurrentL3() const {return fCurrentL3;}
Expand Down
7 changes: 6 additions & 1 deletion STEER/STEERBase/AliEventTag.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ ClassImp(AliEventTag)
fPrimaryVertexZ(-100.0),
fPrimaryVertexZError(-100.0),
fTriggerMask(0),
fTriggerMaskNext50(0),
fTriggerCluster(0),
fZDCNeutron1Energy(-10.0),
fZDCProton1Energy(-10.0),
Expand Down Expand Up @@ -142,6 +143,7 @@ AliEventTag::AliEventTag(const AliEventTag & evTag) :
fPrimaryVertexZ(evTag.fPrimaryVertexZ),
fPrimaryVertexZError(evTag.fPrimaryVertexZError),
fTriggerMask(evTag.fTriggerMask),
fTriggerMaskNext50(evTag.fTriggerMaskNext50),
fTriggerCluster(evTag.fTriggerCluster),
fZDCNeutron1Energy(evTag.fZDCNeutron1Energy),
fZDCProton1Energy(evTag.fZDCProton1Energy),
Expand Down Expand Up @@ -311,11 +313,14 @@ TString AliEventTag::GetFiredTriggerClasses(TString actclass) const
{
// Uses the actclass string to decode the trigger mask
// into the fired trigger classes
// Modifed by rl for 100 classes - to be checked.
TObjArray *actrig = actclass.Tokenize(" ");
TString tFired("");

for(Int_t i = 0; i < actrig->GetEntries(); i++) {
if (fTriggerMask & (1ull << i)) {
Bool_t fired=(fTriggerMask & (1ull << i));
if(i>=50)fired=(fTriggerMaskNext50 & (1ull << (i-50)));
if (fired) {
TString str = ((TObjString *) actrig->At(i))->GetString();
if (tFired.Length() > 0)
tFired += " ";
Expand Down
5 changes: 4 additions & 1 deletion STEER/STEERBase/AliEventTag.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ class AliEventTag : public TObject {
void SetVertexFlag(Int_t i) {fPrimaryVertexFlag = i;}
void SetVertexZError(Float_t f) { fPrimaryVertexZError = f;}
void SetTriggerMask(ULong64_t Ptr) {fTriggerMask = Ptr;}
void SetTriggerMaskNext50(ULong64_t Ptr) {fTriggerMaskNext50 = Ptr;}
void SetTriggerCluster(UChar_t n) {fTriggerCluster = n;}
void SetZDCNeutron1Energy(Float_t Pen) {fZDCNeutron1Energy = Pen;}
void SetZDCProton1Energy(Float_t Pen) {fZDCProton1Energy = Pen;}
Expand Down Expand Up @@ -139,6 +140,7 @@ class AliEventTag : public TObject {
Int_t GetVertexFlag() const {return fPrimaryVertexFlag;}
Float_t GetVertexZError() const {return fPrimaryVertexZError;}
ULong64_t GetTriggerMask() const {return fTriggerMask;}
ULong64_t GetTriggerMaskNext50() const {return fTriggerMaskNext50;}
UChar_t GetTriggerCluster() const {return fTriggerCluster;}
Float_t GetZDCNeutron1Energy() const {return fZDCNeutron1Energy;}
Float_t GetZDCProton1Energy() const {return fZDCProton1Energy;}
Expand Down Expand Up @@ -227,6 +229,7 @@ class AliEventTag : public TObject {
Float_t fPrimaryVertexZ; //Primary vertex - Z coordinate
Float_t fPrimaryVertexZError; //Primary vertex - Z coordinate - error
ULong64_t fTriggerMask; //Information from trigger (trigger mask)
ULong64_t fTriggerMaskNext50; //Information from trigger (trigger mask)
UChar_t fTriggerCluster; // Trigger cluster (mask)
Float_t fZDCNeutron1Energy; //ZDC info - neutron
Float_t fZDCProton1Energy; //ZDC info - proton
Expand Down Expand Up @@ -291,7 +294,7 @@ class AliEventTag : public TObject {
Short_t fNbPMV0A; //Total number of fired channels in V0 A side
Short_t fNbPMV0C; //Total number of fired channels in V0 C side

ClassDef(AliEventTag,17) //(ClassName, ClassVersion)
ClassDef(AliEventTag,18) //(ClassName, ClassVersion)
};
//___________________________________________________________________________

Expand Down

0 comments on commit 2c3aa4a

Please sign in to comment.